Code replacement for irrigation controllers

ABSTRACT

Some embodiments provide irrigation controllers comprising: a housing; a control unit including a first microcontroller configured to execute irrigation programs and a first set of code; and a removable plug-in device that removably mates with a portion of the irrigation controller and communicationally couples to the first microcontroller, wherein the plug-in device comprises a memory storing a second set of code to replace at least a portion of the first set of code, wherein the plug-in device is configured to re-flash at least a portion of the first set of code allowing a copy of the second set of code to overwrite at least the portion of the first set of code; wherein the first set of code comprises a bootloader that writes the copy of the second set of code over the first set of code with the exception of the bootloader that is not written over.

This application is a continuation of U.S. application Ser. No.12/911,683, filed Oct. 25, 2010, entitled CODE REPLACEMENT FORIRRIGATION CONTROLLERS, which is a continuation of U.S. application Ser.No. 11/767,390, filed Jun. 22, 2007, entitled CODE REPLACEMENT FORIRRIGATION CONTROLLERS, which is a continuation-in-part of U.S. patentapplication Ser. No. 11/022,329, filed Dec. 23, 2004, entitled MODULARAND EXPANDABLE IRRIGATION CONTROLLER, which claims the benefit of U.S.Provisional Application No. 60/532,498, filed Dec. 23, 2003, entitledMODULAR AND EXPANDABLE IRRIGATION CONTROLLER, all of which areincorporated herein by reference in their entirety.

FIELD OF INVENTION

This invention relates to an irrigation controller for controlling theoperation of an irrigation system. In particular, this invention relatesto a modular irrigation controller with expandable features.

BACKGROUND OF THE INVENTION

Modular irrigation controllers use optional modules that can be added tothe controller to increase the number of irrigation stations that may becontrolled by the controller. For example, U.S. Pat. No. 5,956,248(William et al.) provides an irrigation controller having a housing thatencloses a microprocessor that stores and executes watering programs,and includes station modules that can be added within the housing toincrease the number of irrigation stations controlled. Additionally,U.S. Pat. No. 5,262,936 (Faris et al.) provides a controller having abase unit for actuating a predetermined minimum number of irrigationstations. External station expansion modules can be added to the baseunit for increasing the number of irrigation stations controlled by thecontroller. Also describes are optional pump modules and accessory timermodules that behave the same as the station modules in that they providean electrical output signal to a pump or to an accessory (such as alight), instead of to an irrigation station. However, the expansionmodules in these patents simply act as additional station outputs (e.g.,a conduit extension of the logic inside the controller and only includedriver circuitry responsive to commands from the base unit) and do notprovide any additional functionality or intelligence. In order to addfunctionality to these controllers apart from adding additional stationoutputs (e.g., to control additional stations or accessories), a userwould have to purchase another irrigation controller configured with thedesired functionality.

There exists, therefore, a need for an improved irrigation controllerwith a flexible and expandable architecture modular design, along withan enhanced communications to the modules that will provide enoughflexibility for further additions to an irrigation system, not only toinclude additional output stations, but also to upgrade to new featuresand capabilities of expansion and re-configuration.

BRIEF SUMMARY OF THE INVENTION

Several embodiments of the present invention answer the above and otherneeds by providing an irrigation controller with flexible and expandablecapabilities for controlling the operation of an irrigation system. Inaccordance with this several embodiments, the irrigation controllerincludes a base unit with a removable and programmable control panel anda bus for communicating with a plurality of removable modules capable ofperforming a variety of functions and expanding the capacity of theirrigation controller beyond the physical limitations of its housing.Also provided are various methods and features for use in the modularirrigation controllers described herein as well as in other irrigationcontrol systems.

Some embodiments provide methods of implementing irrigation control,these methods comprise: detecting a presence of a first module coupledwith a control unit of an irrigation controller, the control unitoperating in accordance with a bootloader set of code and a first set ofcode to implement irrigation control; identifying that the first modulestores a second set of code; and activating the bootloader set of codeto replace the first set of code with the second set of code.

Other embodiments provide methods of implementing irrigation control.These methods comprise: operating an irrigation control unit of anirrigation controller according to a first set of code to implementirrigation control and a bootloader code; receiving a second set of codefrom a first module that is removably coupled with the control unit; andreplacing the first set of code with the second set of code.

Still other embodiments provide methods of a module supplying a set ofcode to an irrigation controller, the method comprising: determining acurrent module mounting location of the irrigation controller to whichthe module is mounted; receiving a request for a first set of codestored on the module that is to replace a second set of code of theirrigation controller, where the irrigation controller is operatingaccording to the second set of code; and transferring a copy of thefirst set of code to the irrigation controller.

Some embodiments provide an expansion module for a modular irrigationcontroller comprising: a housing; an electrical connector coupled to thehousing to removably connect to one of a plurality of module mountinglocations of the modular irrigation controller, each module mountinglocation electrically coupled to a control unit of the modularirrigation controller that executes stored irrigation programs; a memorywithin the housing that stores a first set of code, where the memoryallows a copy of the first set of code to be transferred to the controlunit to replace at least a portion of a current set of code stored inthe control unit.

Still other embodiments provide modular irrigation controllers thatcomprise: a housing; a control unit within the housing, the control unitincluding a first microcontroller for executing stored irrigationprograms and a first set of code of the control unit; a plurality ofmodule mounting locations within the housing adapted to removablyreceive modules, each module mounting location communicationally coupledto the first microcontroller; a module removably mounted to a firstmodule mounting location and contained within the housing, the modulecommunicationally coupled to the first microcontroller and the modulecomprises memory storing a second set of code to replace at least aportion of the first set of code of the control unit and allows a copyof the second set of code to be transferred to the control unit tooverwrite at least a portion of the first set of code of the controlunit.

Some embodiments provide an apparatus that couples with an irrigationcontroller and provides the irrigation controller additionalfunctionality, the apparatus comprising: a processor; a communicationport that communicationally couples with an irrigation controller; and amemory that stores: a first set of irrigation controller code thatreplaces existing irrigation controller code stored on the irrigationcontroller; a functional set of code that provides irrigationfunctionality, where the functional set of code is activated by theirrigation controller and implemented from the apparatus to provide atleast some irrigation control functionality during irrigation.

Other embodiments provide expansion modules for a modular irrigationcontroller comprising: a housing; an electrical connector adapted toremovably connect to any one of a plurality of expansion module mountinglocations of a modular irrigation controller, each expansion modulemounting location electrically coupled to a control unit controlled byfirmware stored in the control unit, the control unit executes storedirrigation programs; a microcontroller within the housing and coupled tothe electrical connector; and a memory coupled to the microcontroller,the memory containing a new firmware version of the firmware stored inthe control unit; the microcontroller adapted to load the new version ofthe firmware into the control unit.

Some further embodiments provide expansion modules for a modularirrigation controller comprising: a housing; an electrical connectoradapted to removably connect to any one of a plurality of expansionmodule mounting locations of a modular irrigation controller, eachexpansion module mounting location electrically coupled to a controlunit controlled by firmware stored in the control unit, the control unitexecutes stored irrigation programs; and a memory within the housing andcoupled to the electrical connector, the memory containing a newfirmware version of the firmware stored in the control unit; the memoryadapted to allow the control unit of the modular irrigation controllerto load the new version of the firmware from the memory into the controlunit.

Additionally, some embodiments provide methods of implementingirrigation control, comprising: coupling a module storing a first set ofcode to a controller operating according to a second set of code;automatically replacing the second set of code with the first set ofcode; and activating the controller to operating according to the firstset of code to provide irrigation control.

In one embodiment, the invention may be characterized as an expansionmodule for a modular irrigation controller comprising: a housing; anelectrical connector coupled to the housing and adapted to removablyconnect to one of a plurality of expansion module mounting locations ofthe modular irrigation controller, each expansion module mountinglocation electrically coupled to a control unit of the modularirrigation controller that executes stored irrigation programs; amicrocontroller within the housing and coupled to the electricalconnector; the microcontroller adapted to: determine that the expansionmodule has been connected to the one expansion module mounting location;and transmit a signal to the control unit to indicate the presence ofthe expansion module to the control unit.

In another embodiment, the invention may be characterized as anexpansion module for a modular irrigation controller comprising: ahousing; an electrical connector coupled to the housing and adapted toremovably connect to one of a plurality of expansion module mountinglocations of the modular irrigation controller, each expansion modulemounting location electrically coupled to a control unit of the modularirrigation controller that executes stored irrigation programs; amicrocontroller within the housing and coupled to the electricalconnector; a visual indicator coupled to the housing and themicrocontroller, wherein at least a portion of which is visible fromoutside of the housing and indicates a status of the expansion module.

In yet another embodiment, the invention may be characterized as anexpansion module for a modular irrigation controller comprising: ahousing; an electrical connector coupled to the housing and adapted toremovably connect to one of a plurality of expansion module mountinglocations of the modular irrigation controller, each expansion modulemounting location electrically coupled to a control unit of the modularirrigation controller that executes stored irrigation programs; amicrocontroller within the housing and coupled to the electricalconnector; an audible indicator coupled to the housing and themicrocontroller, the audible indicator emitting an audible sound thatindicates a status of the expansion module.

In a further embodiment, the invention may be characterized as anexpansion module for a modular irrigation controller comprising: ahousing; an electrical connector coupled to the housing and adapted toremovably connect to any one of a plurality of expansion module mountinglocations of the modular irrigation controller, each expansion modulemounting location electrically coupled to a control unit of the modularirrigation controller that executes stored irrigation programs; amicrocontroller within the housing and coupled to the electricalconnector; an input device coupled to the housing and to themicrocontroller, the input device adapted to send a signal to themicrocontroller in response to the operation of the input device by auser.

In another embodiment, the invention may be characterized as anexpansion module for a modular irrigation controller comprising: ahousing; an electrical connector adapted to removably connect to any oneof a plurality of expansion module mounting locations of a modularirrigation controller, each expansion module mounting locationelectrically coupled to a control unit adapted to execute storedirrigation programs; and a microcontroller within the housing andcoupled to the electrical connector, the microcontroller adapted to:transmit commands to the control unit, the commands causing the controlunit to display information to a user.

In yet another embodiment, the invention may be characterized as amodular irrigation controller comprising: a housing: a control unitwithin the housing, the control unit including a first microcontrollerfor executing stored irrigation programs and a memory; a plurality ofexpansion module mounting locations within the housing adapted toremovably receive expansion modules, each expansion mounting locationelectrically coupled to the first microcontroller; a first expansionmodule removably mounted to a first expansion module mounting locationand electrically coupled to the first microcontroller, the firstexpansion module including driver circuitry for actuating irrigationvalves in accordance with control signals received from the firstmicrocontroller; and the first microcontroller adapted to store userdefined configuration data specific to the first expansion module in thememory, the user defined configuration data retained in the memory whenthe first expansion module is removed from the first expansion modulemounting location.

In a further embodiment, the invention may be characterized as a modularirrigation controller comprising: a housing: a control unit within thehousing, the control unit including a first microcontroller forexecuting stored irrigation programs, the control unit having a firstinternet protocol address; a plurality of expansion module mountinglocations within the housing adapted to removably receive expansionmodules, each expansion mounting location electrically coupled to thefirst microcontroller; an expansion module removably mounted to a firstexpansion module mounting location and contained within the housing, theexpansion module electrically coupled to the first microcontroller, theexpansion module including a second microcontroller, the secondmicrocontroller adapted to operate with the first microcontroller, theexpansion module having a second internet protocol address; wherein thecontrol unit addresses the expansion module using an internettransmission protocol.

In another embodiment, the invention may be characterized as a modularirrigation controller comprising: a housing: a control unit within thehousing, the control unit including a first microcontroller forexecuting stored irrigation programs; a plurality of expansion modulemounting locations within the housing adapted to removably receiveexpansion modules, each expansion mounting location electrically coupledto the first microcontroller; an expansion module removably mounted to afirst expansion module mounting location and electrically coupled to thefirst microcontroller, the expansion module including a secondmicrocontroller, the second microcontroller adapted to operate with thefirst microcontroller; wherein the first microcontroller is adapted: totransmit an authentication request to the expansion module; receive aresponse to the authentication request from the expansion module; anddetermine, based on the response, if the expansion module is authorizedto operate with the first microcontroller.

In another embodiment, the invention may be characterized as a modularirrigation controller comprising: a housing: a control unit within thehousing, the control unit including a first microcontroller forexecuting stored irrigation programs; a plurality of expansion modulemounting locations within the housing adapted to removably receiveexpansion modules, each expansion mounting location electrically coupledto the first microcontroller; an expansion module removably mounted to afirst expansion module mounting location and electrically coupled to thefirst microcontroller, the expansion module including a secondmicrocontroller, the second microcontroller adapted to operate with thefirst microcontroller; wherein the first microcontroller is adapted: totransmit an authentication request to the expansion module; receive aresponse to the authentication request from the expansion module; anddetermine, based on the response, if the expansion module is authorizedto operate with the first microcontroller.

In another embodiment, the invention may be characterized as anexpansion module for a modular irrigation controller comprising: ahousing; an electrical connector adapted to removably connect to one ofa plurality of expansion module mounting locations of a modularirrigation controller, each expansion module mounting locationelectrically coupled to a control unit that executes stored irrigationprograms; and a microcontroller within the housing and coupled to theelectrical connector, the microcontroller adapted to operate with thecontrol unit; wherein the microcontroller is adapted: to transmit anauthentication request to the control unit; receive a response to theauthentication request from the control unit; and determine, based onthe response, if the control unit is authorized to operate with themicrocontroller.

In another embodiment, the invention may be characterized as a modularirrigation controller comprising: a housing; a control unit within thehousing, the control unit including a first microcontroller forexecuting stored irrigation programs; a plurality of expansion modulemounting locations within the housing adapted to removably receiveexpansion modules a back plane circuit board comprising a bus couplingthe first microcontroller to each of the plurality of expansion modulemounting locations; wherein the bus comprises a serial multi-drop buscomprising: a serial data in line; and a serial data out line.

In another embodiment, the invention may be characterized as anexpansion module for a modular irrigation controller comprising: ahousing having a surface adapted to contact one of a plurality ofexpansion module mounting locations of a modular irrigation controller,each expansion module mounting location electrically coupled to acontrol unit of the modular irrigation controller that executes storedirrigation programs; an electrical connector coupled to the surface andadapted to removably connect to the one of the plurality of expansionmodule mounting locations; driver circuitry within the housing adaptedto actuate irrigation valves in accordance with control signals receivedfrom the control unit; a guidepost extending substantiallyperpendicularly from surface, the guidepost adapted to insert into acorresponding guide hole formed in expansion module mounting location; atab extending substantially perpendicularly from the surface, the tabhaving a ledge formed at a distal end of the tab, the tab adapted to fitwithin a corresponding tab hole formed in the expansion module mountinglocation such that the ledge is located under an edge of a periphery ofthe tab hole.

In another embodiment, the invention may be characterized as a modularirrigation controller comprising: a housing: a back plane circuit boardwithin the housing; a control unit removably mounted within the housingand electrically coupled to the back plane circuit board, the controlunit including a first microcontroller for executing stored irrigationprograms; a plurality of expansion module mounting locations within thehousing and electrically coupled to the back plane circuit board andadapted to removably receive expansion modules; a first expansion moduleremovably mounted to a first expansion module mounting location andelectrically coupled to the first microcontroller; the first expansionmodule comprises: a second microcontroller, the second microcontrolleradapted to operate with the first microcontroller; driver circuitryadapted to actuate irrigation valves in accordance with control signalsreceived from the first microcontroller; and current detection circuitrycoupled to the second microcontroller, wherein the secondmicrocontroller is adapted to detect a short circuit condition or anover current condition and suspend irrigation.

In another embodiment, the invention may be characterized as a userinterface for an irrigation controller comprising: a display screen; anda microcontroller for driving the display screen to display information;wherein the microcontroller is adapted to display a user interfacescreen that allows a user to select one of a plurality of user groupsand, in response to a selection of the user, generate and display asequence of display screens to facilitate the programming of theirrigation controller corresponding to the selected user group, wherethe sequence of display screens is different for each of the pluralityof user groups.

In another embodiment, the invention may be characterized as a userinterface for an irrigation controller comprising: a display screen; amicrocontroller for driving the display screen to display information;and a memory storing user interface displays in each of a plurality oflanguages, wherein the microcontroller is adapted to display a userinterface screen that allows a user to select one of the plurality oflanguages and, in response to a selection of the user, generate anddisplay at least one menu display screen in the selected language.

In another embodiment, the invention may be characterized as anexpansion module for a modular irrigation controller comprising: ahousing; an electrical connector adapted to removably connect to any oneof a plurality of expansion module mounting locations of a modularirrigation controller, each expansion module mounting locationelectrically coupled to a control unit controlled by firmware stored inthe control unit, the control unit executes stored irrigation programs;a microcontroller within the housing and coupled to the electricalconnector; and a memory coupled to the microcontroller, the memorycontaining a new firmware version of the firmware stored in the controlunit; the microcontroller adapted to load the new version of thefirmware into the control unit.

In another embodiment, the invention may be characterized as anexpansion module for a modular irrigation controller comprising: ahousing; an electrical connector adapted to removably connect to any oneof a plurality of expansion module mounting locations of a modularirrigation controller, each expansion module mounting locationelectrically coupled to a control unit controlled by firmware stored inthe control unit, the control unit executes stored irrigation programs;and a memory within the housing and coupled to the electrical connector,the memory containing a new firmware version of the firmware stored inthe control unit; the memory adapted to allow the control unit of themodular irrigation controller to load the new version of the firmwarefrom the memory into the control unit.

In another embodiment, the invention may be characterized as a userinterface for an irrigation controller comprising: a control unit thatexecutes stored irrigation programs; a display coupled to the controlunit, the control unit adapted to cause information to be displayed onthe display for the user; a memory adapted to store irrigation programparameters; wherein the control unit is adapted to display parametersstored in the memory relating to an irrigation program in a single userinterface comprising one or more display screens that do not allow forthe parameters to be edited.

In another embodiment, the invention may be characterized as a userinterface for an irrigation controller comprising: a control unit thatexecutes stored irrigation programs; a display coupled to the controlunit, the control unit adapted to cause information to be displayed onthe display for the user; a memory adapted to store irrigation programparameters; wherein the control unit is adapted to determine and storein the memory a total run time for an irrigation program and display thetotal run time for the irrigation program in a display screen that doesnot allow for the program related parameters to be edited.

In another embodiment, the invention may be characterized as anirrigation controller comprising: a housing; a control unit within thehousing, the control unit including a first microcontroller configuredto execute stored irrigation programs and a first set of code of thecontrol unit; and a removable plug-in device that removably mates with aportion of the irrigation controller such that the removable plug-indevice is communicationally coupled to the first microcontroller,wherein the removable plug-in device comprises a memory storing a secondset of code to replace at least a portion of the first set of code ofthe control unit, wherein the removable plug-in device is configured tore-flash at least a portion of the first set of code allowing a copy ofthe second set of code to be transferred to the control unit tooverwrite at least the portion of the first set of code of the controlunit; wherein the first set of code of the control unit comprises abootloader that when implemented writes the copy of the second set ofcode over the first set of code of the control unit with the exceptionof the bootloader that is not written over.

In another embodiment, the invention may be characterized as a method ofimplementing irrigation, the method comprising: activating a firstmicrocontroller of a control unit positioned within a housing; storing,in a controller memory of the control unit communicationally coupledwith the first microcontroller, one or more irrigation programs and afirst set of code of the control unit, wherein the first microcontrolleris configured to implement the one or more irrigation programs and toexecute the first set of code; receiving a removable plug-in device thatmates to a portion of the irrigation controller, wherein the plug-indevice when mated is communicatively coupled with the firstmicrocontroller, wherein the removable plug-in device stores a secondset of code configured to replace at least a portion of the first set ofcode of the control unit; and re-flashing at least a portion of thecontroller memory copying the second set of code from the removableplug-in device and overwriting at least the portion of the first set ofcode of the control unit with a copy of the second set of codetransferred from the removable plug-in device to the control unit;wherein the re-flashing at least the portion of the controller memorycomprises executing a bootloader code of the first set of code thatimplements the overwriting the first set of code with the copy of thesecond set of code over the first set of code of the control unit withthe exception of the bootloader code that is not written over.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other aspects, features and advantages of severalembodiments of the present invention will be more apparent from thefollowing more particular description thereof, presented in conjunctionwith the following drawings.

FIG. 1 is a three dimensional view of the irrigation controlleraccording to one embodiment of the present invention.

FIG. 2 is a front view of the open irrigation controller of FIG. 1showing the control panel user interface and inside view of the door.

FIG. 3 is a three dimensional view of the open irrigation controller ofFIG. 2 with the control panel also swung open, showing the backplane andits connection to the control panel through the ribbon cable.

FIG. 4 is a front view of the open irrigation controller of FIG. 2showing the back of the control panel and the interior of the rearhousing and having a portion of the control panel cut away to show alarger portion of the base module receptacle and having a portion of thebackplane cover cut away to show the backplane circuitry underneath thebackplane cover.

FIG. 5 is a three dimensional view of the irrigation controller of FIGS.1-5 showing the base module and the expansion modules installed and thecontrol panel detached.

FIG. 6 is an enlarged front view of the open controller of FIGS. 1-5with the door cut away, control panel removed and showing the interiorof the rear housing with the base module and the expansion modulesinstalled.

FIG. 7 is an enlarged plan view of the base module.

FIG. 8 is an enlarged plan view of the expansion module.

FIG. 9 is three dimensional view of a base module showing the modulelatch buttons and the module interface connector.

FIG. 10 is a block diagram of one embodiment of the irrigationcontroller of FIGS. 1-7.

FIG. 11 is a block diagram of one embodiment of the control panel.

FIG. 12 is an illustration of one embodiment of the interface pinassignments for the ribbon cable connection between the control paneland the backplane circuitry.

FIG. 13 is a schematic diagram of one embodiment of the base modulecircuit.

FIG. 14 is a schematic diagram of one embodiment of an expansion modulefunctioning as a station output module.

FIG. 15 is a schematic diagram of one embodiment of the control panelcircuit.

FIG. 16 is a schematic diagram of one embodiment of the backplanecircuit.

FIG. 17 is a block diagram of one embodiment of an expansion modulefunctioning as an input module.

FIG. 18 is a block diagram of one embodiment of an expansion modulefunctioning as a smart expansion module.

FIG. 19 is a block diagram showing the logical interaction of anexpansion module functioning as a user interface extensible(configurable) module in accordance with one embodiment of theinvention.

FIG. 20 is an illustration of one embodiment of the pinout assignmentsof the base module connector.

FIG. 21 is an illustration of one embodiment of the pinout assignmentsof the expansion module connector.

FIG. 22 is an illustration of one embodiment of the pinout configurationof the external expansion housing connector.

FIG. 23A illustrates the annular ring molded onto the control panel 30,running around the rotary switch post (not shown) and forming a barrieragainst water in accordance with one embodiment of the invention.

FIG. 23B is a cut away view of the annular ring of FIG. 23A taken atsection A-A of FIG. 23A according to one embodiment.

FIG. 24 is a flow chart illustrating the module enumeration process inaccordance with one embodiment of the invention.

FIG. 25 is an illustration of one embodiment of the pinout assignmentsfor the liquid crystal display of the control panel.

FIG. 26 is an illustration of one embodiment of the pinout assignmentsfor the external communications interface port.

FIG. 27 is an illustration of the socket application programminginterface in accordance with one embodiment of the invention.

FIG. 28 is an illustration of the challenge/authenticate model inaccordance with an embodiment of the invention.

FIG. 29 is an illustration of one embodiment of the module enumerationpin timing.

FIG. 30 is an illustration of generation of A0-A6 by a microcontrollerin accordance with one embodiment of the invention.

FIG. 31 is an illustration of enumeration pins-diode arrangement inaccordance with one embodiment of the invention.

FIG. 32 is a block diagram of one embodiment of an expansion modulefunctioning as an interface extension smart module.

FIG. 33 is a block diagram of one embodiment of an expansion modulefunctioning as a smart expansion module without any station inputs oroutputs.

FIG. 34 is a block diagram of one embodiment of an expansion modulefunctioning as a smart expansion module and including a display and auser input key.

FIG. 35 is one embodiment of a display screen sequence in which a usercan select a user group, which then alters the display screen andprogramming sequence.

FIGS. 36-50 provide several embodiments of display screens for displayon the LCD of user interface of the controller in accordance with oneembodiment of the invention.

FIG. 51 is a three dimensional view of the open expansion housingshowing the backplane and its expansion modules in accordance with oneembodiment of the invention.

FIG. 52 is a perspective view of an enclosed housing or cabinet withinwhich the new and improved irrigation controller according to anotherembodiment of the invention is contained.

FIG. 53 is a perspective view of the irrigation controller housing ofFIG. 52, showing the housing door in an open position to reveal thecontrol panel of the controller base unit.

FIG. 54 is a perspective view of the irrigation controller housing ofFIG. 52 showing the base unit control panel in an open position andshowing a base module and an expansion module mounted within thehousing.

FIG. 55 is an expanded perspective view somewhat similar to FIG. 54, butshowing the base module and the expansion module removed from thehousing and having one additional expansion module and a smart moduleinstalled therein, and showing the control panel detached from thehousing.

FIG. 56 is a front plan view of the controller housing with the dooropen and the with the base module locked in and two expansion modulesand the Smart module placed on the insertion rail guides and with aportion of the backplane cover cut away to show the bay and thebackplane circuitry underneath the backplane cover.

FIG. 56A is a fragmentary sectional view taken substantially along theline A-A of FIG. 5.

FIG. 57 is a front view of the open controller with the control panelopened to 180 degrees showing its back and revealing the interior of thebase unit with all modules removed and with a portion of the backplanecover cut away to show the backplane circuit board underneath thebackplane cover.

FIG. 58 is an enlarged plan view of the base module.

FIG. 59 is a perspective view, partially in cut-away section, of theexpansion module, and showing the locking lever and the terminal blocks,and having a portion of the expansion module cut away to show the fingercontacts connector.

FIG. 60 is an enlarged plan view of the smart module.

FIG. 61 is an exploded perspective view of a module, herein an expansionmodule, showing the module basic component parts.

FIG. 62 is a block diagram of the irrigation controller of theinvention.

FIG. 63 is a schematic diagram of the base module circuit.

FIG. 64 is a schematic diagram of the expansion module circuit.

FIG. 65 is a schematic diagram of one form of the smart module circuit.

FIG. 66 is a block diagram representation of the expansion moduleindicating the configuration of the pins.

FIG. 67 is a block diagram representation of the smart module indicatingthe configuration of the pins.

FIG. 68 is a schematic diagram of the backplane circuit board circuit.

FIG. 69 is a schematic diagram of the control panel circuit.

FIG. 70 shows a smart expansion module according to some embodimentsthat is similar to the smart module illustrated in FIG. 33, and stores aversion of firmware in the memory.

FIG. 71 depicts a simplified flow diagram of a process to activate abootloader and implement a re-flash or code replacement of a maincontroller.

FIG. 72 shows a simplified flow diagram of a process to activate acontrol unit and/or to implement a re-flash of firmware.

FIG. 73 depicts a simplified flow diagram of a process to identify are-flash expansion module and initiate a re-flash and/or a codereplacement of the firmware.

FIG. 74 depicts simplified block diagram representations of a series ofcommunications.

FIG. 75 depicts a simplified flow diagram of a process of an operationof a re-flash module according to some embodiments.

FIG. 76 depicts a simplified block diagram of memory structures of theflash memory of the control panel and the memory of a re-flash expansionmodule according to some embodiments.

FIG. 77 depicts a simplified block diagram of a smart module accordingto some embodiments that is similar to the smart module illustrated inFIG. 70.

Corresponding reference characters indicate corresponding componentsthroughout the several views of the drawings. Skilled artisans willappreciate that elements in the figures are illustrated for simplicityand clarity and have not necessarily been drawn to scale. For example,the dimensions of some of the elements in the figures may be exaggeratedrelative to other elements to help to improve understanding of variousembodiments of the present invention. Also, common but well-understoodelements that are useful or necessary in a commercially feasibleembodiment are often not depicted in order to facilitate a lessobstructed view of these various embodiments of the present invention.

DETAILED DESCRIPTION

The following description is not to be taken in a limiting sense, but ismade merely for the purpose of describing the general principles ofexemplary embodiments. The scope of the invention should be determinedwith reference to the claims.

Described herein are several embodiments relating to irrigationcontrollers for controlling irrigation stations. In many embodiments,the irrigation controllers are modular in that various functionalcomponents of the irrigation controller are implemented in removablemodules that when inserted into position within the controller providecertain functionality. Accordingly, the embodiments described hereincover various functionalities, features and methods useful in suchmodular controllers; however, many embodiments apply to irrigationcontrollers generally. The following specification describes severalembodiments of the invention in the context of two example modularcontroller implementations. For example, many embodiments of theinvention are described in one or both of a modular controller asillustrated variously in FIGS. 1-51 and FIGS. 70-77, and a modularcontroller as variously illustrated in FIGS. 52-69 and FIGS. 70-77.

The present embodiments describe the modular capabilities of theirrigation controller as well as the ability to enhance and/or upgradethe controller. Some embodiments further provide abilities to providenew or revised operating code, instructions, software, programs and/orfirmware to an irrigation controller without having to replace aprocessor or memory, and/or without having to take apart the irrigationcontroller. Firmware generally is a set of instructions, code and/orsoftware that is embedded in a hardware device or memory. It is oftenprovided on flash ROMs or as a binary image file on a computer readablemedium.

Referring to the modular controller design, such as variouslyillustrated in FIGS. 1-51 and FIGS. 70-77, one embodiment of theinvention, designated as irrigation controller 10, is generallyillustrated in FIG. 1. According to several embodiments herein, thecontroller 10 is a modular irrigation controller that has an expandablearchitecture. As shown, the expandable architecture irrigationcontroller 10 is installed in a water-resistant controller housing 20indicated in FIG. 2. When the unit is installed on site, typically on awall or the like, through mounting holes 42, indicated in FIGS. 4 and 6,valve control wires and power wires 79 run through a wiring accesshole(s) 41 at the bottom and the back of the rear housing 40 as seen inFIG. 5. Also provided are additional wiring access holes 41 a and 41 bin the event additional wires need access into the housing 20. Thisinnovative irrigation controller 10 having an expandable architecturemodular design allows for economical expansion as well as easyinstallation and addition of capabilities and features not found inother irrigation controllers. Further, the expandable architectureallows enhancements and/or upgrading of the irrigation controller 10.

The controller housing 20, formed of plastic or other suitable material,is designed to withstand various environmental conditions. In one form,the controller housing 20 includes rear housing 40 and door 16 thatenclose the electrical components housed within the housing 20. In oneembodiment, the housing 20 encloses the base unit 50, the base module 55and a plurality of expansion modules 65 to protect their electroniccomponents and connections. As described further throughout thisspecification, in preferred form, a plurality of different types ofexpansion modules 65 are provided that may be removably inserted in anyone of one or more locations within the controller 10. Thus, in manyembodiments, a controller 10 is provided with different types ofexpansion modules having different functionality with the samecontroller. Additionally, in many embodiments, expansion modules used asstation outputs may have a different number of station outputs and beinserted in any one of one or more locations within the controller.Still further, some expansion modules provide functionality that is notprovided through the controller 10. In some implementations, someexpansion modules 65 cannot operate with a current operating version ofthe controller 10, and as such, the module can provide an upgrade or anew operating version of firmware, code, instructions, software and/orother operating code to a controller to allow at least in part thefunctionality provided by the expansion module to be utilized.

The base unit 50, shown in FIG. 3 and FIG. 4, carries out basicirrigation functions and also performs other advanced functions. Thebase unit 50 is comprised of the control panel 30 (also referred togenerically as the main control unit or the control unit) and thecontroller housing 20 as further indicated in FIG. 2 and accommodatesthe backplane 45 which is indicated in FIG. 3. The backplane 45 providesbackplane circuitry 46 (one embodiment of which is illustrated in FIG.16) to provide electrical interconnections between various componentsand modules to be housed within the housing 20.

The door 16 pivotally swings open from a closed position to an openposition as seen in FIG. 2 to reveal the removable and programmablecontrol panel 30 that includes a user interface 21 to enter and maintainan irrigation schedule and to display controller status and otherfunctions. The door 16 contains an opening or hole 18 to provide directviewing of the illuminating status indicator 28 on the control panel 30when the door 16 is closed. The door 16 has a lock 17 to restrict accessto the base unit 50.

Looking at FIG. 4, a battery compartment 37 is provided to accommodatethe battery of the control panel 30. The storage posts 37 a used forstorage of a battery connector, also visible in FIG. 3, are recessed tofacilitate flat placement of the control panel 30 on a table duringprogramming, when the control panel 30 is detached from the base unit50. Also provided is an optional station wiring guide 29 that may beadhered to an interior surface of the control panel 30 to provide easyidentification of the various station modules.

The reset button 36 on the back of the control panel 30 consists of aright-angle mounted switch component (not shown) on the front side ofthe control panel circuitry 31 for easy and cost effective manufacturingand can be discretely actuated by a pencil or a screwdriver for hardwarereset. The reset button 36 serves to restart the control panelmicrocontroller 32 from a potential lock-up condition possibly caused byelectrical disturbances.

Indicated in FIG. 4, the communication wire retention channel 38conveniently restrains and directs the communications cables (not shown)to the external communication interface 34 a (see FIG. 10) while theexternal communication interface panel 34 is closed and the electroniccomponents are protected against environmental damage.

Importantly, it is an objective of several embodiments of the inventionto have the control panel 30 modular and removable from the controllerhousing 20 and the base unit 50, as seen in FIG. 5. Advantageously, thecontrol panel 30 can be programmed with irrigation schedules by a userwhile detached from the rest of the base unit 50. A pin and socketmechanism 35, plus a ribbon cable 49 connection to the backplanecircuitry 46 of the back plane 45 permits the control panel 30 to beremoved from the base unit 50. To provide power so that the controlpanel 30 can be removed and programmed independent of an outside powersource, a battery (not shown) is provided in the recessed batterycompartment 37, seen in FIG. 4, at the back of the control panel 30.This further provides additional flexibility and economic advantage inthat, for example, a damaged control panel can quickly be changed andreplaced with a new control panel without the need to replace the entirebase unit 50. It is noted that while in many embodiments, the controlunit or control panel 30 is modular and removable, in other embodiments,the control unit is integral to the controller housing and not intendedto be removable.

Now looking at FIG. 11, located within the control panel 30, the controlpanel circuitry 31 includes the main microcontroller 32 thatcommunicates with base module 55 through base module signal lines 39 aextending through the backplane circuitry 46 and the pins of a basemodule connector 44. The main microcontroller 32 also communicates withthe expansion modules 65 through a communication bus 39 extendingthrough the backplane circuitry 46 and the pins of the module connectors47 (shown in FIG. 4) to control the irrigation functions as defined inthe irrigation program as well as the other functions contained inexpansion modules 65. Depending on the implementation, the bus 39 may bea serial or parallel bus. In preferred form, the communication bus is amulti-drop serial bus and is described further below. It is also notedthat as used throughout this specification, the term “microcontroller”refers to an electrical device that minimally includes a processor logic(e.g., one or more microprocessors), memory (e.g., one or more memorydevices), and inputs and outputs and is adapted to execute instructionsbased on information stored in memory either within the microcontrolleror external to the microcontroller. Microcontrollers as used herein alsoinclude any necessary timers and/or clocks.

It is also an object of several embodiments of the invention to have thecommunications interface port 34 a, as part of the control panelcircuitry 31, connecting to a plurality of modular cartridges (notshown) facilitating a communications link via a plurality of media suchas a radio modem, a telephone modem, wireless networks, hard-wired orfiber optic systems, etc. interfacing to a plurality of computers andnetworks. Such a communications link allows the irrigation controller 10to intercommunicate for various commands including those for irrigation,for the update of the firmware 33 a without the removal of anyelectronic components from the irrigation controller 10, and for theuploading and downloading of irrigation schedules. Also, the schedulesthat the user has entered at the control panel 30 may be extracted andsent to a central control system via the communications interface 34. Inone example, the communications interface port 34 a uses a dual-sided2×5-pin edge card type with pin assignments illustrated in FIG. 26.

The main microcontroller 32 gathers information or commands from theuser interface 21, processes them and sends the commands to the basemodule 55 via control signals and to the expansion modules 65 via thecommunication bus 39 to drive the valves. As illustrated in FIG. 10, thecontrol panel microcontroller 32 also has the ability to interface withother external peripherals including expansion modules 65, externalexpansion housing(s) 80 including additional expansion modules 65, andthe external communications interface 34 a. The expansion modules 65 areprovided in many different forms including an expansion module thatprovides additional station outputs to control additional irrigationvalves, an expansion module that provides outputs to devices other thanto additional irrigation stations, an expansion module that providesinputs to the main microcontroller 32 (e.g., in the form of externalconditions provided by sensors), a smart expansion module that providesadditional functionality not originally found in the mainmicrocontroller 32 as originally configured, one or more expansionmodules that upgrade the irrigation controller 10 and/or provide new orrevises operating code(s), instructions and/or firmware 33 a that atleast in part allows the irrigation controller 10 to operate accordingto the new or revised firmware to control irrigation and/or interactionwith modules, and interface extension smart expansion modules thatprovide functionality to direct the main microcontroller to provide auser interface extension to the expansion module so that the expansionmodule can performed its additional functionality.

In many embodiments, the main microcontroller 32 and the communicationbus 39 have an architecture that allows the main microcontroller of themain control panel 30 to work together with the expansion modules 65 inorder to implement the functionality of the irrigation controller 10.For example, in preferred form, one or more of the expansion modules 65include their own microcontroller, e.g., microcontrollers 66 a as seenin FIGS. 14, 17 and 18. In smart expansion modules, the microcontrollers66 a of the expansion modules are adapted to communicate with and sharedata with the main microcontroller. The main microcontroller isconfigured to be able to accept additional expansion modules and worktogether with them. For example, the main microcontroller is configuredto be able to transmit data, parameters or variables which correspond toor are a part of one or more irrigation programs stored by the mainmicrocontroller, in response to requests from the expansion module(s) 65for such data, parameters and variables. Additionally, the mainmicrocontroller 32 is configured to accept and store changes updatesand/or replacements to parameters, variables, one or more irrigationprograms as provided by an expansion module, operating conditions,operating code and/or firmware. For example, in one embodiment, anexpansion module 65 receives a copy of a stored irrigation program fromthe main microcontroller 32, adjusts the program based on thefunctionality of the expansion module 65 and sends the updatedirrigation program to the main microcontroller to replace the existingirrigation program. Advantageously, such architecture allows anirrigation controller to be designed while allowing for expansionmodules to be designed to add additional functionality to thecapabilities of the irrigation controller. The additionalfunctionalities may not even be known at the time of the manufacture ofthe irrigation controller 10 and the control panel 30; however, sincethe main microcontroller is configured to share its data and accept dataand control signaling from an expansion module, the capabilities of theirrigation controller may be expanded without requiring that a userpurchase a new irrigation controller. Instead, the user would simplypurchase a new expansion module 65 having the desired functionality.Accordingly, additional functionality can be provided to the irrigationcontroller 10 through the use of some types of expansion modules 65without requiring that any firmware or software in the mainmicrocontroller 32 be added, changed or replaced. Further, someexpansion modules 65 provide updates to operating code of the controlunit 30 and/or replacement of code, instructions and/or firmware 33 a(referred to generally herein as firmware) implemented by the mainmicrocontroller 32 to enhance the irrigation controller 10 withouthaving to replace the irrigation controller.

Generally, this type of coordinated operation between the mainmicrocontroller 32 of the control panel 30 and the various expansionmodules 65 is provided through the configuration of the mainmicrocontroller 32 to be able to operate together with expansion modulesof unknown functionality and its ability to share data with theexpansion modules 65 and ability to act in response to data and commandsfrom the expansion module. Additionally, a communication link andprotocol are provided that allow data flow between the mainmicrocontroller 32 and the various expansion modules 65. Further detailsand description are provided throughout this specification.

The main microcontroller 32 is also capable of directly monitoring otherinputs such as the valve solenoid current, the presence of the basemodule 55, sensor inputs (e.g. rain and flow), and the AC linefrequency. In addition to the user interface 21, the mainmicrocontroller 32 is able to accept commands through the remote controlport 63, shown in FIG. 4, and an external communication interface 34 a,illustrated in FIG. 10.

Importantly, it is an objective of several embodiments of the inventionto provide a communication link between the main microcontroller 32 andthe distributed microcontrollers 66 a of the expansion modules 65, seenin FIG. 14. In one embodiment, the communication protocol uses aphysical layer based on a 9-bit capable Universal SynchronousAsynchronous Receiver Transmitter (USART). This provides an addressingmechanism internal to the USART that avoids continuously interruptingthe distributed microcontrollers 66 a. The USART utilizes a serialprotocol on the module communication bus 39 that has a plurality of datain and data out pins as well as an optional serial clock pin. Thetransmission of data from the main microcontroller occurs on the dataout pin (e.g., SMB-DO of FIG. 12) and the reception occurs on the datain pin (e.g., SMB-DI of FIG. 12). A serial clock is used in the case ofsynchronous data communication only. In the case of asynchronouscommunication, the serial clock pin is not used. In various forms, thecommunication protocol for communications on the bus 39 works withasynchronous data communication or with synchronous data communicationswhen a serial clock is provided. However, the irrigation controller 10takes the technology a step further by programming the microcontrollers66 a of the expansion modules to configure their serial data out pins tobe in high impedance mode until they are addressed. For example, in oneembodiment, the main microcontroller 32 always drives its data out pinactively as it is the only device driving this signal. When individuallyaddressed, each distributed microcontroller 66 a of the expansionmodules 65 re-configures its serial transmit data out pin (e.g., SMB-DIof FIG. 21) on-the-fly to drive the data bus 39 and transmit data onthis pin. Consequently, several embodiments offer a communicationsprotocol that can be extended and modified with minimum impact on therest of the system. The bus 39 could be expanded to virtually any lengthand the expansion modules could be located remotely from the irrigationcontroller 10 either independently or located in an external expansionhousing(s) 80. It is noted that the USART is a well known communicationprotocol. Accordingly, the communication bus is a multi-drop busstructure in that all expansion modules 65 are coupled to the same bus39 and each pulls any communications intended for it from the busthrough the addressing mechanism of the USART. In preferred form, thebus 39 comprises a serial data bus; however, it is understood that inother embodiments, the bus 39 has a parallel line structure.

Interconnect communication busses in existing modular irrigationcontrollers use a master/slave architecture. For example, the controllerof U.S. Pat. No. 5,748,466 (McGivern et al.) employs a query/responsemodel with the main microcontroller making a query to the module andexpecting a response from it to ascertain the number of stationsinstalled in the irrigation controller. Such a query/responserelationship of the controller and modules results in unnecessaryoverhead and bandwidth usage on the interconnecting bus, becoming alimiting factor in expansion capability. Further, such overhead canreduce the operating speed of the system. Several embodiments of theinvention solve this problem by having the expansion module 65self-detect its installation and announce its presence to the mainmicrocontroller 32. Generally, the microcontroller 66 a of the expansionmodules is configured to detect when it is connected to the connector 47of the backplane 45. Once this determination is made, themicrocontroller 66 a causes a message to be transmitted to the mainmicrocontroller via the communication bus 39 announcing that theexpansion module has been installed. The microcontroller 66 a waits foran acknowledge message back from the main microcontroller 32. If noacknowledge is received, the microcontroller 66 a sends additionalmessages to the main microcontroller 32 until the main microcontroller32 acknowledges the presence of the expansion module 65. Therefore,since the expansion modules are configured to self detect theirinstallation in the controller 10, the main microcontroller 32 does notneed to query the expansion modules 65. This results in saved overheadand bandwidth usage allowing the irrigation controller 10 toself-configure and provide for more overall expansion capacity with lessdemand on the main microcontroller 32 and the bandwidth of thecommunication bus 39.

It is an object of several embodiments to make the programming of awatering schedule into the irrigation controller 10 free of historicalchallenges that users have been facing with the prior art irrigationcontrollers. One embodiment solves the problem of difficult entry andincorrect setup of a watering schedule into existing controllers throughthe incorporation of a water wizard for easy setup, programming and use.The water wizard allows the irrigation controller 10 to confirmautomatically that a watering schedule entered by the user is consistentand logical and guides the user through the programming steps necessaryto setup the irrigation controller 10 and program a watering scheduleinto it. This intelligent water wizard is based on the mainmicrocontroller 32 built into the irrigation controller 10. The waterwizard guides the user through a series of logical steps, asking onlyfor the needed information in an intuitive form and subsequentlycreating a schedule to satisfy the needed irrigation. For example, thewater wizard asks if the irrigation is for lawn, trees or shrubs. Thenit asks what the soil type is. And then it inquires about the Sunexposure. The water wizard would ask for a specific zone or wateringtime as necessary to complete the irrigation schedule. This union ofnative human language with the logic of an irrigation controller hasbeen unprecedented in the art of inventing irrigation controllers.

It is a further object of other embodiments to include a novelwater-conserving feature in which the user interface 21 provides‘program review’ and ‘total run time’ features. Using the program reviewfeature, the controller 10 displays to the user, e.g., on the LCD 24(generically referred to as a display 24), a listing of all stations andwatering times on a single display screen or series of displays screensthat a user may scroll through. Advantageously, the user does not haveto manipulate the rotary dial 22 or navigate complex menus in order toseparately view irrigation settings or the irrigation program forvarious stations.

FIGS. 36-48 provide display screens generated for display on the LCD 24that provides program review features in accordance with an embodimentof the invention. In the following display screens, text provides theinformation while the bottom edge of the screen indicates which soft key25 should be pressed to select a function or go forward or backwardsthrough the display screen sequence. FIG. 36 illustrates the maindisplay that allows the user to review programmed information fortroubleshooting or other purposes. For example, the display of FIG. 36allows the user to select the soft key below “1” to select option1—confirm programs, while soft key below “2” selects option 2—test allvalves. Selecting option “1” prompts the display screen of FIG. 37 to bedisplayed. This display screen allows the user to select between threeoptions: 1—program review, 2—program run time, and 3—valve run time. Inaccordance with one embodiment, selecting option 1 enters the user intothe program review display sequence of FIGS. 38A through 48 in which theuser can review the programmed status of all stations and their wateringtimes.

In response to selecting option 1 in the display screen of FIG. 37, thedisplay screen of FIG. 38A is displayed. This screen displays thewatering start times for all valves 1, 2, . . . , 8. It is noted that ifno start times are programmed, the display screen of FIG. 38B isdisplayed instead of the screen of FIG. 38A. Furthermore, it is notedthat this display screen and the other displays screens of FIGS. 38Athrough 48 illustrate the status of program A. To view the status ofprograms B, C, etc., the user simply moves the program selector switch27 to the appropriate program.

Selecting the soft key corresponding to “next” in the screens of FIG.38A or 38B results in the display screen of one of FIG. 39A, 39B, 39C,39D or 39E providing the watering day cycle for the selected program tobe displayed depending on whether the watering day cycle is cyclical,custom, odd, odd 31, or even. Selecting the “next” option in any of thedisplays of FIGS. 39A-39E displays the display screen of FIG. 40, whichthen provides the watering days (based on the watering day cycle).Selecting the “next” option in the display of FIG. 40 displays thedisplay screen of FIG. 41, which then provides the run times for eachvalve. The soft keys corresponding to “+” and “−” allow the user toscroll through more valves not fitting on one the single display screen.Selecting the “next” option in the display of FIG. 41 displays thedisplay screen of FIG. 42, which then provides the amount of seasonaladjust (e.g., 115%). If there is no seasonal adjust present (e.g., thevalue is 100%), the display screen of FIG. 42 is skipped. Selecting the“next” option in the display of FIG. 42 (or FIG. 41 if FIG. 42 isskipped) displays the display screen of FIG. 43, which then provides thenumber of rain delay days remaining Again, if there are no rain delaysdays remaining, this display screen is skipped. Selecting the “next”option in the display of FIG. 43 (of FIGS. 41, 42 if there is a skippeddisplay) displays the display screen of FIG. 44, which then provides thestatus (e.g., either “on” or a programmed “off” day) for each calendarday. The “+” and “−” allow the user to scroll through subsequent andprevious days while indicating the status for that day. Selecting the“next” option in the display of FIG. 44 displays the display screen ofFIG. 45, which then provides any programmed valve delays. Selecting the“next” option in the display of FIG. 45 displays the display screen ofFIG. 46A, which then provides cycle and soak times for all valves. Inthe illustrated embodiment, since all valves will not fit on the samedisplay screen, the “+” and “−” soft keys allow the user to scrollthrough the valves. For example, pressing the “+” key once advances thelist to the display screen of FIG. 46B to reveal valve 06 and removevalve 01. Likewise, pressing the “+” soft key further, further advancesthe display to the display of FIG. 46C and eventually to the display ofFIG. 46D. Selecting the “next” option in any of the displays of FIGS.46A-46D displays the display screen of FIG. 47, which then provides thestatus of the master valve or pump for valve 01. Again, the user maypress the “+” and “−” soft keys to scroll through more valves. Selectingthe “next” option in the display of FIG. 47 displays the display screenof FIG. 48, which then provides the status of a sensor override (e.g.,overriding the rain sensor) for each valve. The user can use the “+” and“−” soft keys to scroll through more valves. The display screens ofFIGS. 36 through 48 provide one embodiment of a program review featurein the display menus that allows a user to easily review the entireprogram for any program A, B, C, etc., and switch between the samedisplay information for different programs easily (by using the programselector switch 27) in a simple intuitive manner. This is in contrast toknown controllers that require a user to traverse through extensiveprogramming menu systems to retrieve the same information.

FIGS. 49 and 50 illustrate one embodiment of a screen display providedby the user interface 21 to display ‘total run time’ features. Forexample, selecting the option “2” in the display of FIG. 37 displays thedisplay screen of FIG. 49, which then provides the total run time forthe program representing the total watering time per day for thatprogram. Alternatively, selecting option “3” in the display of FIG. 37displays the display screen of FIG. 50 which provides the total run timeper watering day per valve to be displayed on the LCD 24 of the userinterface 21. These total run time display screens allow contractors,water auditors and homeowners to see exactly how much irrigation willoccur per day based on the controller's settings. The total run timecalculations include many factors including watering time, cycle andsoak settings and the effects of seasonal adjust. It assumes there is nointerference from a stacking effect, rain sensor, central control, oruser intervention. Such calculations and ease in retrieving them throughthe user interface represents a significant advance in the userinterface for irrigation controllers.

One advantage of the various program review user interface displayscreens, such as shown in FIGS. 36-50, is that this interface onlyallows the user to “review” the programs and parameters. In thisinterface, the user can not make changes to the program as the user istrying to review the program. This user interface solves a problemencountered in many controllers in which while attempting to review agiven program or parameter, a user accidentally makes changes to theprogram (since when viewing program information in such controllers, theuser has entered programming interface displays and menus).

Irrigation controllers are being provided with more and more features,buttons, labels and ever thickening manuals while trying to provide theuser with more feedback and while supposedly simplifying the userinterface, but ultimately adding to the complexity. Several embodimentsanswer the user interface complexity problem in the field of art, bypushing the complexity into the internal computer program logic of theirrigation controller 10. Basically, the user is asked about thewatering or typical conditions or constraints existing on the landscape.The irrigation controller 10 configures itself in terms of the overallwatering needs and objectives. This “Intelligent Use of Water” TMconcept relieves the user of having to know detailed information aboutstation run times, optimum watering time of the day, start times, numberof start times, etc.

In one embodiment, the irrigation controller 10 intelligently stores andrecalls module programming and configuration information in order toeliminate the need to reprogram the controller or expansion module whenexpansion modules are changed. For example, information unique to eachexpansion module is stored in a configuration data table residing in thenon-volatile storage device (EEPROM) 32 a of the main microcontroller 32(see FIG. 11). As an alternate embodiment, this same configuration datacould be stored in the flash memory 33. This configuration datatypically represents data that is specific to the expansion module 65.For example, the configuration data may include: what type of module theexpansion module is (e.g., whether it is a station expansion module, aninput module, a decoder module, etc.); how many station outputs areprovided by the expansion module; how many and what type of inputs areprovided by the expansion module; in the event the expansion modulereceives inputs from sensor devices, what type of sensor devices theexpansion module is coupled to (e.g., moisture, rain, wind sensors),etc. This configuration data is transferred to the main microcontroller32 from the microcontroller 66 a of the expansion module 65 over the bus39. This data is then stored in the non-volatile configuration datatable. When the configuration data needs to be installed into a newreplacement module, the data is recalled from the non-volatile memoryand transferred to the module over the bus 39.

When a given expansion module 65 is removed and replaced by an identicalexpansion module (or a different module with similar function), allconfiguration data and programming related to the expansion moduleremoved is retained by the controller 10 and is applied to thereplacement expansion module. In one embodiment, the module location andmodule's electronic SKU (stock keeping unit) number are used to track ifa “new” module in a module mounting location 45 b can accept the data.Once the newly installed expansion module 65 announces its presence tothe main microcontroller 32 of the control unit, the configuration datatable is scanned to verify that the same type of modules are mounted inthe controller housing. If there is a match, the newly installedexpansion module is passed the programming and configuration dataalready existing in the non-volatile memory 32 a (or 33) eliminating theneed for the user to reprogram the expansion module configuration orirrigation schedule. In the event there is not a match, then the mainmicrocontroller 32 determines that the newly installed expansion moduleis not identical to the removed module or is not intended to be areplacement for the removed expansion module, and the storedconfiguration data may be deleted or overwritten with new configurationdata if the memory is needed.

Irrigation controllers are growing in complexity with each generation.According to several embodiments, the use of a Real Time OperatingSystem (RTOS) in the main microcontroller 32 of the irrigationcontroller 10 simplifies and makes the operation of the microcontroller32 more robust. It allows for a more complex program to be developedthat is more robust and of higher quality in a shorter amount of time.In preferred form, the controller 10 employs the real time operatingsystem (RTOS) to allow separate program sections to communicate betweenthemselves in a well-defined fashion. Since each piece of program runsindependently in its own context, it is easier to write and read thesupporting software as well as to troubleshoot software bugs during thedevelopment stage and have a bug-free software running in the irrigationcontroller 10.

The microcontroller 32 of the main control unit or control panel 30houses non-volatile memory backup (EEPROM) 32 a, shown in FIG. 11, whichis used to store and maintain, while the power is off, informationprovided as input, via the user interface (UI) 21, remote control port63 or the communications interface 34. This non-volatile memory backup32 a on the main microcontroller 32 maintains the watering scheduledetails, module data and other system parameters upon line power outage.

Also shown in FIG. 11, the firmware 33 a for the irrigation controller10 is stored in the flash memory 33. This flash memory allows thefirmware 33 a to be updated in the field without the need to replace themain microcontroller 32, by using an expansion module 65 c, referred toas a re-flash module (one example of which is illustrated and describedfurther in connection with FIGS. 32-33 and 70-77) or through thecommunications interface 34 a without the need to replace any physicalcomponent on the controller 10.

One of the objectives of another embodiment is to customize the userinterface 21 according to the needs of the different user groups such asthe contractors or the commercial users and novice users who lackexperience in programming controllers. One embodiment solves the problemof having to design/redesign an irrigation controller according to thechanging interface demands of the different user groups such as aclassic contractor, a modern contractor, a novice user, etc., byoffering a simple menu of user groups. The user simply makes a selectionbased on what user group they belong to and the overall user interface21 changes with display driven menus tailored exclusively for thatspecific user group. For example, according to one embodiment, the useris able to specify in a user interface display settings display screenwhat type of group the user/programmer of the irrigation controllerbelongs to: a modern contractor (a contractor who is accustomed tomodern methods to program an irrigation controller), a classiccontractor (a contractor who is accustomed to a traditional method ofprogramming an irrigation controller), or a novice (a user not familiarwith the programming of an irrigation controller). Once the user selectswhich group the user belongs to, the user interface (i.e., the displayscreens and programming sequence) are presented to the user accordingly.Thus, the programming process the user must navigate to program thecontroller will vary depending on which group the user selects. Oneembodiment is illustrated in FIG. 35, which presents a programming setupdisplay screen 130 offering the user to select whether the user is anadvanced user, such as a contractor (option 1) or a beginner (option 2).Once the user selects which group the user belongs to, the displayscreens and programming sequence changes. For example, if the user isadvanced, display screen sequence 131 is followed, while if the user isa beginner, display screen sequence 132 is followed.

As seen in FIG. 2, the user interface (UI) 21 consists of a rotary dial22 for programming, a plurality of indicators 23, a liquid crystaldisplay (LCD) 24 (generically referred to as a display), a statusindicator 28 (e.g., a visual and/or audible alarm) to alert the user toa status condition, the unlabeled soft keys 25, a sensor switch 26, anda program selector switch 27. In one embodiment, the status indicator 28indicates the status of the functionality of the control panel 30. Forexample, when flashing, the status indicator indicates to the user afault condition in the controller 10, while when the indicator isconstantly illuminated, this indicates that the controller has suspendedirrigation, e.g., due to a rain sensor. In preferred form, the statusindicator 28 comprises a visual indicator, such as a light emittingdevice, e.g., a light emitting diode (LED), that visibly indicates astatus of the controller. In preferred form, the opening or hole 18formed in the door 16 is aligned with the status indicator so that thestatus indicator is visible from the exterior of the controller housingwhile the door is closed. In other words, the user does not have to openthe controller housing in order to determine that there is a fault. Inother embodiments, the status indicator 28 comprises an audible alarm,e.g., a sound emitting device, e.g., a small speaker, that emits anaudible sound to indicate the status (e.g., fault condition or normaloperation) of the controller. In another embodiment, the statusindicator 28 is both a visual indicator and an audible indicator of astatus of the controller 10.

Shown in FIGS. 23A and 23B, an annular ring 19, molded onto the controlpanel 30, runs around the rotary switch post (not shown) and forms abarrier against water entry into the controller 10. This protects theinternal circuitry from water damage. In the illustrated form, theannular ring 19 is a raised wall, rib or barrier that extendsperpendicularly from the surface of the control panel 30 and annularlyabout a recess 81 b within which is formed a hole 81 a that is providedto allow a post to connect the rotary dial 22 to the switchingcomponents within the controller 10. The annular ring 19 is designed tofit underneath the lip 82 or edge of the rotary dial 22. In use, withthe control panel oriented such that the surface of the control panel isvertical (in the orientation of FIGS. 1-4), any water that seepsunderneath the lip 82 of the rotary dial 22 contacts the raised surfaceof the annular ring 19 and is directed around the outer perimeter of theannular ring 19 and away from the recess 81 b and hole 81 a. Thus, theannular ring 19 provides additional protection from water entering theinterior of the control panel 30.

The unlabeled soft keys 25 (also shown in FIG. 2) are used interactivelywith the commands that appear on the LCD 24. This approach places thelabel for each key 25 on the LCD 24 rather than on the keys themselves,allowing the label to change as appropriate, making the irrigationcontroller 10 easier to use and eliminating the need to create adifferent button for each label needed.

Existing irrigation controllers are limited to small, simple LCDsegmented displays with limited language capability and limited graphiccapability. It is a further objective of several embodiments to enhancethe user experience through a display that can support a plurality ofgraphics and different alphabetical characters of different languages.To this end, the irrigation controller 10 employs a graphical displaycontrolled by the control panel microcontroller 32 accommodating asuperior language and graphics support with more lines of informationdisplayed on the LCD 24 having the pinout configuration as illustratedin FIG. 25. This pinout provides 8 bits of data (D0-D7) to the LCD 24.As seen in FIG. 11, in one embodiment, the firmware 33 a whichimplements multiple alphabets, languages, font sizes and graphicsfacilitates the offering of the alphabets of multiple languages fordisplay by the irrigation controller 10. This solution involves aspecialized and innovative set of graphics routines that enable themultiple alphabets and text strings to be stored in memory 33 or 32 aand written to the display 24 with limited RAM resource demand on themain microcontroller 32. In preferred form, this innovative firmwaregraphic routines treat each language's alphabet as a collection ofbitmap characters. As each character is displayed on the screen, theindividual dots on the screen are made dark or light to form thatcharacter. This results in a single character stored in the firmwarecontrolling up to several hundred individual dots that represent thecharacter on LCD 24. This is done through a look-up process' where thesingle character indexes into the bitmap collection stored in thefirmware. A similar method is used for storing pictures and icons, wherea single character stored in EEPROM 32 a is used to translate into up tothousands of dots on the screen by looking-up the stored graphic bitmapbased on the single character. This results in minimized memory usagewhich is crucial for the high volume manufacturing of the irrigationcontroller 10 at a low cost.

In several embodiments, the user is allowed to select which language toview the display screens in. Known controllers are configured to displayscreens in a single language (e.g., English). However, since thecontroller stores display screens in multiple languages, the user canselect a given language or change the display screen language. Thelanguage selection is stored in non-volatile memory (e.g., EEPROM 32 a)so that the setting is saved for use after a power outage occurs. Forexample, the user simply navigates (through the rotary switch 22, thedisplay screen menus and soft keys 25) to a language select screen toselect the language of choice. Additionally, the language of initialdisplay may be set when shipping the product, if for example, thecontroller will be shipped to a specific country having a commonlyaccepted language. The user will have the ability to change thislanguage, but at least the initial language will be in the most commonlanguage of that country.

While the user interface 21 in accordance with some embodiments of theinvention utilizes different fonts to emphasize certain details to theuser, different portions of the display 24 can be flashing to emphasizecertain other details. A plurality of graphic icons is also employed aspart of the emphasis mechanism of the user interface 21.

Now returning to FIG. 4, located within the rear housing 40, thebackplane circuitry 46 is used primarily as an interconnection betweenthe various modular components (e.g., the modules 55, 65) and thecontrol panel circuitry 31 (one example of which is illustrated in FIG.15). The backplane circuitry 46 (one example of which is illustrated inFIG. 16) is also used to connect with the remote control unit (not shownhere) via remote connection port 63 as well as the external expansionhousings 80 via external expansion housing connector 62 whose pinconfiguration is illustrated in FIG. 22. The backplane circuitry 46additionally accommodates two terminal blocks 60 a, shown in FIG. 4,connecting the 24 VAC supply voltage to the controller 10 and onegrounding terminal block 60 b which is used for grounding to provideelectrical surge protection.

The backplane circuitry 46 provides a valve test through asingle-position screw terminal 64, also shown in FIG. 4. The valve testconnection terminal 64 is provided with a 24 VAC supply voltage.

The backplane 45 also includes a base module mounting location 45 a anda plurality of expansion module mounting locations 45 b. Each mountinglocation 45 a and 45 b provides a location on the backplane where amodule can be mounted thereto. The base module mounting location 45 aincludes a connector 44 that includes pins or contacts electricallycoupled to the backplane circuitry 46. Each expansion module mountinglocation 45 b also includes a connector 47 that includes pins orcontacts electrically coupled to the backplane circuitry 46. Inoperation, the base module 55 is mounted within the housing 20 at thebase module mounting location 45 a of the backplane 45, and theexpansion module(s) 65 are mounted within the housing 20 atcorresponding expansion module mounting locations 45 b of the backplane45.

As seen in FIG. 3, the backplane circuitry 46 is connected to thecontrol panel circuitry 31 via a ribbon cable assembly 49. The connectorlayout and assigned signals for the ribbon cable 49 are illustrated inFIG. 12.

According to several embodiments of the invention, mechanisms areprovided to ensure that modules installed into the controller arecompatible with the controller 10 and that these modules 65 were builtby an authorized manufacturer. In one embodiment, each module 65contains a predetermined textual message, e.g., a textual message thatis copyright protected, that is transmitted by the module 65 over thebus 39 to the main microcontroller 32. The main microcontroller 32expects to receive a valid textual message (e.g., the copyright message)from every module 65. If it does not receive such a message, the mainmicrocontroller 32 will treat that specific module as rogue and ignoreit. According to a second embodiment, both the modules 65 and the mainmicrocontroller 32 contain a challenge/authenticate mechanism. Thisallows for a “mutual authentication” scheme that can be initiated byeither the main microcontroller 32 or the expansion modulemicrocontroller 66 a. As shown in FIG. 28, in one form where the mainmicrocontroller 32 initiates the authentication procedure (Step 90), themain microcontroller 32 will generate a random number (Step 91), passthis random number to the module 65 as a challenge (Step 92, which canbe generically expressed as transmitting an authentication request tothe expansion module 65), and also process this random number (Step 93)through a secret authentication algorithm contained inside the mainmicrocontroller 32. The module 65 will receive this random number andalso process this same random number (Step 94) through an identicalsecret authentication algorithm contained inside the module'smicrocontroller 66 a. The module's microcontroller 66 a will send theresult (Step 95) from the secret authentication algorithm as a reply tothe main microcontroller 32. Based on the response from the expansionmodule, the main microcontroller 32 will determine if the expansionmodule is an authorized expansion module. For example, the mainmicrocontroller 32 will compare the result it computed internally withthe result provided by the module (Step 96). If the results match, thenthis indicates to the main microcontroller 32 that the module doesindeed know the secret authentication algorithm and therefore must be avalid module built by an authorized manufacturer (Step 97). The mainmicrocontroller 32 will then continue to interact and communicate withthat module 65. If the result does not match, the expansion module isnot authorized to operate with the main microcontroller and a roguealert will issue (Step 98). The controller 10 is also able to display amessage on the LCD 24 to indicate that a rogue module has been detected.

Expansion modules 65 would also like to have assurance that they areinstalled in a controller 10 that has also been built by an authorizedmanufacturer. In this embodiment, the module 65 issues a challenge tothe main microcontroller 32 (Step 100), as shown in FIG. 28. The module65 will generate a random number (Step 101), pass this random number tothe main microcontroller 32 as a challenge (Step 102, which can begenerically expressed as transmitting an authentication request to themain microcontroller 32), and also process this random number (Step 103)through a secret authentication algorithm contained inside the module65. The main microcontroller 32 will receive this random number and alsoprocess this same random number (Step 104) through an identical secretauthentication algorithm contained inside the main microcontroller 32.The main microcontroller 32 will send the result from the secretauthentication algorithm as a reply to the module 65 (Step 105). Basedon the response from the main microcontroller, the module 65 willdetermine if the main microcontroller is an authorized control unit. Forexample, the module 65 will then compare the result it computedinternally with the result provided by the main microcontroller 32 (Step106). If the results match, then this indicates to the module 65 thatthe controller 10 does indeed know the secret authentication algorithmand therefore must be a valid controller built by an authorizedmanufacturer (Step 107). The module 65 will then continue to interactand communicate with the controller. If there is no match, then the mainmicrocontroller of the control unit is not authorized to operate withthe expansion module and a rogue alert will issue (Step 108).

In preferred embodiments, the confidentiality of these transfers (steps92, 95, 102, 105) is maintained by encrypting the data sent over thecommunication bus 39.

With an expandable architecture, it is possible that users could attemptto keep adding modules without limits. This may make it difficult todistinguish different products with different capacities in the market.A further object of some embodiments of the invention is to limit thenumber of modules, the number of each type of module, the number ofexternal expansion housings, or any combination thereof. To that end, amechanism exists in the firmware 33 a such that if the user attempts toexceed the imposed limits, the irrigation controller 10 advises the userthat a limit has been reached. Also, the controller 10 refuses tooperate any modules that exceed the limit. For example, in oneembodiment, a limit of the number of modules (or a limit of the numberof certain types of modules that is allowed to be attached to thecontroller (including all expansion housings) is stored in the memory ofthe microcontroller (e.g., firmware 33 or the EEPROM 32 a). When amodule is enumerated, the main microcontroller checks to see if thereare stored any limits. If there are, beyond the limit, the mainmicrocontroller will not enumerate the additional modules or operatetherewith. Additionally, the main microcontroller will send or cause anerror message to be displayed to the user indicating that the user hasexceeded the maximum number of modules (or maximum number of modules ofa given type of module).

As indicated in FIGS. 7 and 8, each module contains a module statusindicator 56 a, e.g., a light emitting diode (LED), that is activatedeither by the module 55, 65 itself or by the main microcontroller 32.This module status indicator 56 a is utilized to report statusinformation, error conditions, correct operation or other functions tothe user. To distinguish different status values, the indicator 56 autilizes a combination of different colors, changing illuminationpattern extending from steady to various blinks and/or uses acombination of blinking and colors. It will be obvious to those skilledin the art that this status indicator 56 a could be any alternate typeof electro-illumination element. In other embodiments, the statusindicator comprises a sound emitting device, such as a small speakerdriven by the microcontroller of the module.

An alternate embodiment of a module status indicator 56 a to communicatethe module status is using a display screen, such as an LCD directly onthe module, that is operated by the microcontroller 66 a of the modules55, 65. See, for example, the diagram of FIG. 34. This display screenwill display module status and fault conditions through text and/orgraphical elements. The modules can also have an LCD or other numeric,alpha-numeric, or graphical display to convey more information than asimple lighted indicator (such as an LED). The display would be used toconvey module-specific or module-related information such as status,setup, or operational readings. This could be, for example,evapotranspiration data, the real-time status of alarm inputs, or theactivation or enabling of features. This would allow the end user tomore efficiently and better use the module and the product as a whole.In another embodiment, the module 55, 65 itself includes a user inputdevice, such as a keypad or other data entry or manipulation method. Themicrocontroller 55, 65 of the module 55, 65 is configured to acceptinputs based on user interaction with the user input device andinformation displayed on a display screen located on the module. See,for example, the diagram of FIG. 34. For example, in the case of adecoder module, this would make the module very flexible and autonomous.This could also serve to decrease the burden placed on the control panelmicrocontroller 32.

As illustrated in the embodiment of FIG. 10, the irrigation controller10 can easily be expanded in capacity beyond the physical size of thecontroller housing 20 by the addition of external expansion housings 80(see the expansion housing of FIG. 51) that are chained together andfunction as one controller, operated by a single control panel 30. Inpreferred form, the external expansion housing 80 expands thecommunication bus 39 from the main microcontroller 32 to allow moremodules 55 and/or 65. In an alternate embodiment, the external expansionhousings 80 are linked to one another with a power line, wherein thepower line carries both power and data between the main microcontroller32 and the external expansion housings 80. Other alternate embodimentsutilize fiber optics, wireless links or infrared links to transfer databetween the main microcontroller 32 and the external expansion housings80. In one form, the backplane circuitry 46 interfaces to the externalexpansion housing 80 through a 1×10 pin-header connector 62 shown inFIG. 4. The connector 62 pinout and assigned signals are shown in FIG.22. The external expansion housing interface connector 62 a (see FIG.10) allows coupling of the external expansion housing to the bus 39. Theconnector 62 b facilitates the attachment of a further externalexpansion housing 80 serving to extend the bus 39 so that multipleexternal expansion housings can be daisy-chained together. Any module,except for the base module 55, can be in any position in the main bodyhousing 20 or in any of the external expansion housings 80. Referring toFIG. 51, one embodiment of the expansion housing is similar to thehousing 20 in that it has a rear housing 40 a and a door 16 a, lock 17and hole 18. The cable connecting to the connector 62 of the backplaneof the housing 20 couples at the other end to the connector 62 a of thebackplane 45 of the expansion housing. Advantageously, the expansionhousing allows additional expansion modules 65 to be coupled to the mainmicrocontroller of the controller 10.

Shown in detail in FIGS. 7 and 9, the base module 55 is anon-intelligent unit which is used to drive the master valves, themodule status indicator 56 a and to carry rain sensor input signals fromthe rain sensors to the main microcontroller 32. As seen in FIG. 9, thebase module 55 accommodates a connector 57 (e.g., a 2×5-pin headerconnector) to interface with the connector 44 coupled to the backplanecircuitry 46. The base module 55 includes circuitry 56 (one example ofwhich is illustrated in FIG. 13), a plurality of wire output terminals58 and the module status indicator 56 a (in this case, an LED). Inpreferred embodiments, the controller 10 cannot function to controlirrigation operations without the base module 55 mounted in thecontroller housing 20. As seen in FIG. 13, the base module circuitry 56includes the base module pinout 69, driver circuitry 70 for the mastervalve, a sensor input circuit 71, surge protection circuitry 72, and theoutput terminals 58. The connector pinout 69 and the assigned signalsare illustrated in FIG. 20. It is noted that as used throughout thisapplication, the term “driver circuitry” in connection with actuating oractivating an irrigation valve generally refers to any combination ofelectrical circuitry to cause an appropriate actuating signal to bedelivered or deliverable to the irrigation valve. For example, in oneembodiment, the driver circuitry includes drivers and output switches(such as triacs or relays). Additionally, the driver circuitry may varydepending on the type of irrigation valve that the circuitry is to drive(e.g., whether the valve is a latching or non-latching solenoidactivated irrigation valve).

In one embodiment, a mechanism exists whereby the accidentalinstallation of the base module 55 in any of the expansion modulemounting locations 45 b or the accidental installation of an expansionmodule 65 in the base module mounting location 45 a is mechanicallyprevented. In one form, this mechanism utilizes the ‘polarity keyfeature’ in which the base module connector 57 is turned 180 degrees inthe opposite direction from the placement of the expansion moduleconnector 67. This connector polarity key feature is also reflected onthe corresponding pins of connectors 44 and 47 of backplane circuitry 46that couple and interconnect with the base module connector 57 and theexpansion module connector 67 respectively. This mechanism prevents thebase module 55 from properly mating if there is an attempt to mount thebase module into one of the expansion module mounting locations 45 b andalso prevents the expansion module 65 from properly mating if there isan attempt to mount an expansion module to the base module mountinglocation 45 a.

Additionally, as seen best in FIG. 4, the connectors 44, 47 are locatedoff-center within the respective mounting locations 45 a, 45 b, suchthat even if the module were turned 180 degrees, it would be physicallyprevented from connecting into the mounting location. For example,guideposts 59 a formed on the back of the modules 55, 65 are designed tofit within guide holes 59 b of the mounting locations 45 a and 45 b. Asseen in FIG. 4, the vertical spacing between the guide holes on the leftand right sides of the mounting locations 45 a, 45 b varies, such thatif the module were turned 180 degrees, it could not mate into themounting location. Additionally, in some embodiments, the male/femaleconnectors are switched on the base module 55 and the expansion modules65. For example, in one embodiment, the connector 47 on the expansionmodule mounting location 45 b is a male connector while thecorresponding connector 57 on the expansion module 65 is a femaleconnector. In order to prevent the base module and the expansion modulesfrom getting mixed, the connector 44 on the base module mountinglocation 45 a is a female connector while the corresponding connector 57on the base module 55 is a male connector.

Seen in FIGS. 7 and 8, the module identification strip 55 a located onthe module tops provide easy identification of modules 55, 65 whileeliminating the need to manufacture different covers for differentmodule types. These identification strips may be color-coded and/orcontain labeling text and/or icons.

FIG. 8 illustrates an expansion module 65, which can be configured ashaving a variety functions depending on the type of module. For example,the expansion module(s) 65 can be employed for expansion to increase thenumber of irrigation stations as well as to expand the functionality ofthe irrigation controller 10. Such expansion module(s) 65 used foroutput are intelligent units driving a plurality of output stations.Referring to FIG. 14, when employed for output, the expansion modulecircuitry 66 of the expansion output module 65 includes a powerregulator 73, a “common” electrical connection for station outputterminals 74, an independent microcontroller 66 a which communicateswith the main irrigation microcontroller 32, a current sensor circuit75, valve-driver circuitry 76 and surge protection circuitry 77 as shownin FIG. 14. It is noted that as used throughout this application, theterm “driver circuitry” in connection with actuating or activating anirrigation valve generally refers to any combination of electricalcircuitry to cause an appropriate actuating signal to be delivered ordeliverable to the irrigation valve. For example, in one embodiment, thedriver circuitry includes drivers and output switches (such as triacs orrelays). Additionally, the driver circuitry may vary depending on thetype of irrigation valve that the circuitry is to drive (e.g., whetherthe valve is a latching or non-latching solenoid activated irrigationvalve).

The expansion modules 65 interface with the backplane circuitry 46through the connector 47 (e.g., a 2×5-pin header connector) indicated inFIG. 4. The expansion module pinout 78 and the assigned signals for theconnectors 47 and 57 are illustrated in FIGS. 14 and 21. The expansionmodule(s) 65 can be used at any connector 47 of any expansion modulemounting location 45 b, except for the one connector 44 at the basemodule mounting location 45 a allocated to the base module 55. It isnoted that due to the communication bus structure and communicationprotocol, expansion modules are allowed to be placed in any expansionmodule mounting location in any order, coupled with the fact that themain microcontroller 32 is configured to not expect modules 65 to beconnected in any specific order in the expansion module mountinglocations 45 b.

In addition to station output expansion modules 65, each moduleconnector 47 can also accept other types of input/output modules thatwill work together with the main microcontroller. In one example, anexpansion input module 65 a can include a plurality of inputs 67 coupledto the microcontroller 66 a such as one providing sensor inputs with anarchitecture that is illustrated in FIG. 17. This type of module 65 aidentifies itself (e.g., once the module detects its installation) tothe main irrigation microcontroller 32 as an input module type so thatthe main microcontroller 32 can store configuration data and interactappropriately with the expansion module. Depending on its configurationas dictated by the firmware 33 b, the microcontroller 66 a either passesthe input data to the main control unit via the bus 39 or processes theinput data in some way prior to passing the data to the control unit.The irrigation controller 10 can then use these inputs as conditionalqualifiers to alter the way it runs an irrigation schedule or program.

The architecture for an expansion module type known as a smart expansionmodule 65 b is shown in FIG. 18. This type of module may contain anycombination of input and/or output signals (e.g., station output signalsto actuate additional irrigation valves or other output signals). Thesignals are not only restricted to irrigation applications but may alsoconsist of data signals, communication signals, etc. The microcontroller66 a inside the smart expansion module 65 b is programmed to perform aspecific set of tasks dependant on the overall function of the expansionmodule. A smart expansion module 65 b is also unique in that it caninteract with the main irrigation microcontroller 32 by sharing internaldata. A unique aspect of several embodiments is that the communicationmethods, messages and protocols between the microcontroller 66 a of thesmart expansion module 65 b and the main irrigation microcontroller ofthe main control unit or control panel 30 allow either microcontroller66 a, 32 to access data, variables, and constants contained in theother's memory space. For example, the microcontroller 66 a can requestand receive irrigation program related data (or the irrigation programitself), make changes to it in accordance with its programmedfunctionality, and return the irrigation program-related data to themain microcontroller 32. The main microcontroller 32 is designed suchthat it can respond to requests for data and information from the smartexpansion module 65 b as well as accept commands from the smartexpansion module 65 b. This allows a smart expansion module 65 b toobserve intricate details occurring inside the main microcontroller, andalso allows the smart expansion module to affect how the mainmicrocontroller 32 behaves by changing data in the mainmicrocontroller's memory space. In this manner, the installation of asmart expansion module 65 b to the irrigation controller 10 candramatically change the overall behavior of the system. Advantageously,this allows the controller 10 to have a significant upgrade of featuresand capability just by installing a smart expansion module 65 b and nothaving to replace any existing electronics or code in the irrigationcontroller 10 itself. It is noted that in preferred embodiments, thereis a two way communication of irrigation program-related data betweenthe main control unit and the expansion module 65 b. This two way datacommunication is the type of communication that can alter the operationof the main microcontroller 32 or otherwise alter the stored irrigationprograms of the main microcontroller 32.

In the diagram of FIG. 18, the smart expansion module 65 b includesinputs 67 and outputs 83 (which in some embodiments includes stationoutput terminals 58), coupled to the microcontroller 66 a, whichcommunicates with the control unit or control panel 30 via the bus 39.The module 65 b also includes module firmware 33 b to operate themicrocontroller 66 a and additional module memory 68.

One example of a smart expansion module 65 b is an evapotranspiration(ET) module that receives ET data at an input 67 and may optionallyinclude one or more station outputs 67. The microcontroller 66 arequests and receives an irrigation program from the mainmicrocontroller 32, alters the program in accordance with the decisionmaking programmed into the module 65 b based on received ET data andreturns the irrigation program with altered parameters to the memory ofthe main microcontroller 32. The main microcontroller 32 is adapted toreceive the replacement irrigation program, store it and execute it. Inthis manner, the expandable and open architecture of the main controlunit or control panel 30 together with the addition of the smartexpansion module 65 b provides additional functionality (e.g., theability to adjust schedules based on ET data) to the irrigationcontroller that was not present in the originally designed andconfigured control panel 30, without any firmware updates or otherchanges to the control panel. According to this architecture, the mainmicrocontroller does not need to know in advance the types of possiblesmart expansion modules 65 b that it could operate together with, itsimply shares its data with other modules of unknown functionality andresponds to commands and executes adjusted schedules provided by thesemodules 65 b. Advantageously, the user does not need to purchase a newcontrol panel to upgrade to functions not provided by the control panel,the user simply purchases a smart expansion module 65 b that providesthe desired functionality.

Moreover, in other embodiments, a variation of smart expansion modulesdefined as interface extension smart modules 65 c is provided which alsohas the ability to interact with the user interface 21 of the controlpanel 30. The interactions between the user and the interface extensionmodule 65 c are shown in FIG. 19. For example, the interface extensionexpansion module has the ability to send control signaling to the mainmicrocontroller 32 of the control panel 30 to cause textual andgraphical information to be displayed on the LCD display 24. It performsthis by sending special messages containing the information to displayto the main irrigation microcontroller 32. The main microcontroller,which is directly connected to the LCD driver electronics, then placesthat information on the LCD for the user to see. For full interactionwith the user, the main microcontroller 32 can also monitor anypressings of the soft keys 25 and will forward that information to theinterface extension smart module. The interface extension smart module65 c is also illustrated in the diagram of FIG. 18 with the modulefirmware 33 b specific to the functionality of the module 65 c. Inaddition, all of the other front panel (main control unit) controls,switches 26 and 27 and the rotary dial 22, are also able to be monitoredin the same way by the interface extension smart module. In this manner,the interface extension module 65 c is able to display menus and otherinformation to the user, and then monitor the user's selections with thesoft keys. The interface extension smart module is able to create a userinterface and entry interaction that does not exist in the firmware 33 aof the controller 10, without changing or upgrading any firmwareoperating the main microcontroller 32. For example, in an interfaceextension module 65 c including ET functionality (such as the smartexpansion module 65 b described above), the interface extension smartmodule 65 c can generate specific types of displays and prompts for userinput, e.g., to configure the ET adjustment processes. The mainmicrocontroller 32 would cause these displays to be displayed on the LCD24 and monitor the user responses on the soft keys 25, and finallyforward the user response to the display screen or menu provided by theinterface extension smart module 65 c. Advantageously, this provides aneasy way for the user to access and/or configure a smart expansionmodule using the main control panel 30.

One embodiment of an interface extension smart module 65 d isillustrated in FIG. 32. This embodiment is similar to the embodiment ofFIG. 18, but does not have any inputs 67 or outputs 83. Also illustratedare functional features stored in the firmware 33 b and/or memory 68 ofthe interface extension module 65 d. For example, functionality toimplement a display driver (through the main microcontroller), tomonitor the user inputs of soft keys 25 (through the mainmicrocontroller), additional menu displays and menus (to be sent to themain microcontroller for display) and any additional fonts for thedisplay menus is stored in the firmware 33 b and/or the memory 68.

Another variation of a smart expansion module 65 e is illustrated inFIG. 33. In this embodiment, the expansion module 65 e does not provideterminal inputs or outputs and adds functionality not present in themain microcontroller 32. For example, functionality of the module 65 eis stored in the firmware 33 b and in the microcontroller 66 a.Additionally, like the other modules 65, 65 a, 65 b, 65 c and 65 d, theexpansion module 65 e can be interchangeably and removably inserted intoany module mounting location 45 b. In one embodiment, the expansionmodule 65 e comprises a re-flash module, which stores new firmware (inmemory 68) to replace the existing firmware 33 a in the control panel30. FIG. 70 shows a smart expansion module 65 g according to someembodiments that is similar to the smart module 65 e illustrated in FIG.33, and stores a version of firmware 33 d in the memory 68. The versionof the firmware 33 d can replace the firmware 33 a of the control panel30, which can provide the control panel with enhanced features, fixproblems with a prior version of firmware, provide additionalcommunication capabilities and/or interactive capabilities to interactwith the re-flash smart expansion module 65 g to utilize additionalfunctionality available through the module that was not available inprevious expansion modules and/or the control unit 30, and/or other suchcapabilities and functionalities at the time of development of thefirmware 33 a. When this re-flash module 65 g is inserted into thecontroller, the main microcontroller 32 and/or the microcontroller 66 ainitiates the process of loading the new firmware 33 d into the controlpanel 30 (typically after the control panel has authenticated theexpansion module 65 e) as described fully below.

In some embodiments, the expansion module 65 e and/or 65 g addfunctionality to the irrigation controller that does not require inputsor outputs. In an alternative embodiment, a re-flash expansion module isprovided that does not require a microcontroller, and where the memory68 storing the new firmware 33 d in the module is directly coupled tothe electrical connector 57 of the module. Upon installation, the mainmicrocontroller of control unit extracts the new firmware from thememory and the memory is allowed to directly transmit a copy of thefirmware to the main microcontroller without the need for amicrocontroller in the re-flash expansion module. In this way, thefunctionality of the controller is updated (e.g., to include ETadjustment capabilities, flow control, user language selection,additional user language, and/or other such functionality). In stillother embodiments, the expansion module provides additional irrigationfunctionality (e.g., flow control, signal decoding, ET adjustments,sensor monitoring, defining a user operating language while the moduleis connected, adding and/or replacing an optional user operatinglanguage, and/or other such irrigation functionality) to the irrigationcontroller 10 that is not provided by the irrigation controller as wellas providing a re-flash of the firmware 33 a and/or other operating codeof the control unit 30 and/or main microcontroller 32.

In some embodiments, the firmware 33 a of the control unit 30 includes adedicated code, application and/or program, referred to below asbootloader code 33 c (see FIG. 76, for example). The bootloader code 33c can be a limited functionality code that implements a re-flash of thefirmware 33 a and/or activates the irrigation controller to operateaccording to currently store firmware. For example, the flash memory 33of the control unit 30 can store a version of the firmware that is abouta 128 Kbyte image of the firmware code. A portion of the 128 Kbyte codecan include the bootloader code 33 c. In some instances, this portioncan comprise 8 Kbytes of bootloader code that has specificfunctionality. This bootloader code is protected and/or restricted sothat it cannot be overwritten or cannot be overwritten withoutadditional authorization. Upon activation of the main microcontroller 32and/or irrigation controller 10, the bootloader can be initiallyactivated to start the remainder of the controller by providing a bootup process that activates the firmware 33 a of the control unit 30. Byprotecting the bootloader code, the main microcontroller 32 can beactivated even if a version of the firmware becomes corrupt, isincompletely replaced and/or other such potential errors. Further, thebootloader can initiate and/or control the replacing or re-flashing ofthe firmware (except for the bootloader code). The bootloader continuesto operate even while the firmware is being replaced because thebootloader is protected and is not overwritten. In other embodiments,however, the bootloader 33 c may also be replaced, for example, bycopying a second bootloader to the flash memory and/or over a portion ofthe firmware. The microcontroller 32 can then be reactivated to accessthe second bootloader instead of the initial bootloader. Further, thesecond bootloader can initiate a subsequent re-flash of the remainder ofthe flash memory 33 and firmware to update the firmware and/or copy overthe initial bootloader and provide a complete firmware.

In some embodiments, a re-flash device, cartridge and/or module cancouple with the communication interface port 34 a, the externalexpansion connector 62, the remote control port 63 or other relevantconnection that allows the re-flash device or module to communicate withthe control unit 30 and provide a firmware image to the control unit.For example, a re-flash device (e.g., a re-flash module 65 g, or otherdevice) can couple with the external expansion connector 62 and operatesimilar to other modules in the mounting locations 54 b; a portablecomputing device, such as a laptop or other such computing device cancouple with the communication interface port 34 a of the irrigationcontroller 10 to similarly provide an upgrade and/or replacement of thefirmware 33 c; and/or other re-flash devices can couple with one or moreother connections and/or ports to communicate (e.g., an RS232connection) with the microcontroller 32.

Further, some implementations provide for a modular cartridge (notshown) to couple with the communication interface port 34 a. The modularcartridge can provide one or more functions to the irrigation controller10, such as providing a modem or other communication link. Stillfurther, the modular cartridge can provide a firmware image that can beused to replace the firmware 33 a of the control unit 30. In someimplementations, the cartridge can include a controller capable oftaking control of the irrigation controller 10 and forcing a re-flash ofthe firmware 33 a. For example, when the cartridge is installed it canidentify a version of firmware 33 a in the flash memory 33 and determinethat the cartridge contains a newer version and activate a re-flash.

Additionally or alternatively, a remote device, such as a remote centralirrigation controller or remote computer can communicationally couplewith control unit 30 through the communication interface port 34 a ofthe irrigation controller 10 to supply a version of firmware to replacethe existing firmware 33 a. Similarly, an expansion module or otherdevice can couple with the external expansion connector 62 to provide are-flash or replacement of the firmware 33 a. Some embodiments furtherprovide for additional functionality in addition to the re-flashing ofthe firmware. For example, a re-flash module could couple with theexpansion connector 62 to provide a re-flash, but additionally identifylanguage selection that is used by the irrigation controller 10. Uponconnecting the module with the expansion connector 62 themicrocontroller identifies the language selection and transitions to thedefined language without further user interaction. Other embodimentsprovide similar language selection through devices other than re-flashmodules, such as a simple language designation device that can couplewith the expansion connector 62.

In some embodiments, the memory 68 of the re-flash module 65 g is anexternal memory chip that is external to the processor chip thatcontains the microcontroller 66 a, memory to store at least theapplication firmware 33 b and the bus interface 39. In otherembodiments, however, the memory 68 can be part of the processor chip.Further, in some embodiments, the application firmware 33 b is part ofthe memory 68 and/or is stored in memory 68.

When a re-flash extension module 65 g is inserted into the irrigationcontroller 10, the module in some embodiments enumerates itself to thecontrol unit 30. Prior to enumerating, for example when utilizing theserial bus 39, the module waits for a silent period on the bus. When thebus is silent for a predefined period of time (e.g., 5 ms, 10 ms, 20 msor some other relevant duration) the re-flash extension module 65 gannounces its presence to the control unit 30 and/or mainmicrocontroller 32, and then waits for a reply. A collision on the busis assumed when the re-flash module does not receive an enumeratecommand from the control unit 30 within a second predefined period, andwill attempt to re-enumerate or re-send the enumeration. In someinstances, the re-flash module 65 g implements a random back off (e.g.,based on a mounting location and/or slot number into which the re-flashextension module is inserted) and then re-attempts the enumeration. Insome embodiments, re-flash modules 65 g can operate without enumeratingthemselves, and instead, the main microcontroller 32 detects theirinsertion (e.g., by querying modules periodically, based on a scheduleand/or randomly). When the re-flash module 65 g is detected, the mainmicrocontroller 32 can request information from the module, such asmodule type, version of firmware 33 d, functions, connections and/orother relevant information.

Once enumerated, the re-flash module returns an identification to themain microcontroller 32 identifying itself as a re-flash module. Upondetecting that the module is a re-flash module, the main microcontrollercan activate the bootloader to implement a re-flash and/or a replacementof the current firmware or other code with a copy of the new version offirmware 33 d from the re-flash extension module 65 g when suchre-flashing is desirable.

FIG. 71 depicts a simplified flow diagram of a process 7120 to activatea bootloader and implement a re-flash or code replacement of a maincontroller 32 according to some embodiments. During operation of theirrigation controller 10, in some implementations, when an expansionmodule 65 is inserted into a mounting location 45 b, the moduleenumerates itself. In step 7122, the main controller 32 receives theenumeration. In some embodiments, the re-flash module does not have toenumerate itself, and instead the control unit 30 can detect itspresences, for example, by polling the mounting locations. In step 7124,the main controller initiates a challenge and/or authentication of theexpansion module 65 g. For example, the main controller can initiate theauthentication procedure of FIG. 28 and/or of FIG. 24 as furtherdescribed below.

In step 7126, it is determined whether the expansion module is verifiedor authenticated. When the module is not authenticated the module isde-enumerated as described with reference to step 120 of FIG. 24 belowand/or an error is indicated (e.g., displayed on the LCD display 24, themodule status indicator 56 a is activated (e.g., flashes) or other suchindications. Alternatively when the expansion module is authenticated,step 7130 is entered where it is determined whether the module is are-flash module. This determination can be based on information providedby the expansion module 65 during the enumeration process, informationprovided in response to a request from the main microcontroller 32 andthe like. When the expansion module is not a re-flash module, theprocess 7120 terminates and the control unit 30 continues with normaloperations.

Alternatively when the expansion module 65 is a re-flash module, step7132 is entered where the main microcontroller 32 requests and receivesa version of the firmware 33 d on the re-flash module 65 g. In step7134, the microcontroller further identifies a version of the currentfirmware 33 a operating on the control unit 30. The microcontroller thendetermines in step 7136 whether the re-flash version of the firmware 33d is greater than the current version of the firmware 33 a (i.e.,whether the re-flash version is newer than the current version offirmware). When the current version is greater, the process terminatesand the control unit 30 continues with normal operations. In thoseinstances where the re-flash version of the firmware 33 d is greaterthan the current version, step 7140 is entered and a re-flash flag isset. This re-flash flag can be a flag set in the non-volatile memory 32a (e.g., EEPROM), flash memory 33, a latch or register separate from thememory 33, in external memory and/or other relevant flag. The process7120 then continues to step 7142 where the bootloader 33 c is activatedto implement a re-flash based on the version of the firmware 33 d in theexpansion module 65 g. In some embodiments, the activation of thebootloader initiates a process 7220 described below with reference toFIG. 72.

FIG. 72 shows a simplified flow diagram of a process 7220 to activate acontrol unit 30 or microcontroller 32, and/or to implement a re-flash offirmware and/or code replacement of a main controller 32 according tosome embodiments. In step 7222, the bootloader is activated. Thebootloader can be activated and/or triggered upon power up of theirrigation controller 10, a reset of the irrigation controller, thedetection of a re-flash expansion module (e.g., step 7142 of the process7120 of FIG. 71), based on a jump to the bootloader during operation ofthe irrigation controller, a timeout occurs during the operation of thebootloader and/or during the process 7220, following a completion of are-flash and/or other such instances. In step 7224, the bootloader 33 cactivates a validation or verification of the current firmware 33 aand/or operating code to determine whether it is valid. In someinstances, the current firmware may be corrupted, incomplete or otherproblems may be experienced with the current version of the firmware 33a. For example, an incomplete version of firmware may be stored becausea previous re-flash failed to complete. The check of the currentfirmware can include one or more verifications, such as a check sumerror evaluation, a cyclic redundancy check (CRC), and/or other relevantevaluations of the firmware to verify the firmware.

In step 7226, it is determined whether the current firmware 33 a isvalid or verified (e.g., the CRC test passed). When the verification orcheck (e.g., CRC) fails, the process 7220 activates a subsequent process7320 to access a re-flash expansion module as described fully below.Step 7226 compensates for at least those instances where a previousre-flash of the firmware 33 a failed to complete, a corrupted firmwarewas stored and/or other similar conditions. Step 7230 is entered whenthe verification in step 7226 passes, and the bootloader 33 c determineswhether a re-flash flag is set. As introduced above with reference tothe process 7120 of FIG. 71, in some embodiments when a re-flashexpansion module is identified, the re-flash flag can be set. When there-flash flag is not set, the process 7220 terminates and the irrigationcontroller 10 continues to step 7250 and normal irrigation controloperations. As introduced above, in some instances, the bootloader 33 cis activated upon start-up, power up and/or reset of the control unit 30and/or the main microcontroller 32. Steps 7222, 7224, 7226 and 7230verify the firmware 33 a and initiate the normal operation of theirrigation controller when a re-flash is not to be performed.

Alternatively, when a re-flash flag is set, the process in someembodiments enters optional step 7232 to determine whether a mountinglocation and/or slot number 45 b is known. In some implementations, whena re-flash expansion module is detected during the enumeration, such asduring the process 7120 of FIG. 71, the mounting location can berecorded when the re-flash flag is set. When the mounting location 45 bis not known, the process 7220 activates an additional process 7320 ofFIG. 73 to identify a re-flash module that might be utilized during are-flash. As indicated, step 7232 can be optional, and in thoseembodiments that do not include step 7232, the process 7220 activatesthe subsequent process 7320 of FIG. 73 in attempts to identify one ormore re-flash modules 65 g. When step 7232 is included and a mountinglocation is known, step 7234 is entered where a re-flash is activated.Some embodiments further confirm that version of the firmware 33 d ofthe re-flash module is greater than the current version of the firmware33 a before activating the re-flash.

The re-flash initiated in step 7234 retrieves a copy of the firmwareimage 33 d on the re-flash expansion module 65 g. In someimplementations, the re-flash image is retrieved in pages, portions orpackets at a time and stored to the flash memory 33. Typically, thesepages of the re-flash image are stored to flash memory 33 replacing theprevious version of the firmware 33 a such that a complete re-flashcopies over the entire flash memory 33 with the exception of thebootloader 33 c that remains intact. As indicated above, typically thebootloader 33 c is protected and cannot be overwritten and/or cannot beoverwritten without additional authorized accesses. The re-flashing ofthe flash memory provides a revised or new version of the firmware tothe irrigation controller 32 providing enhanced functionality and/orcommunication capabilities, abilities to utilize additionalfunctionality provided by expansion modules 65 (including functionalitythat may be provided by the expansion module 65 g that has just providedthe new version of the firmware), correct errors in a prior version offirmware and/or other such advantages.

Still referring to FIG. 72, in step 7236 it is determined whether atimeout has been detected and/or whether the re-flash is complete. Thistimeout can occur, for example, if a response to a request (e.g.,request for a portion of the firmware image) is not received from there-flash expansion module or other such timeouts. In those instanceswhere a timeout occurs or other similar errors occur, the process 7220returns to step 7222 to again activate the bootloader 33 c in attemptsto activate the main microcontroller 32 and/or implement a re-flash ofthe flash memory 33. Alternatively, when a timeout does not occur and/orthe re-flash is complete, a verification is performed in step 7240 toverify the re-flashed firmware. Again, this verification can be based ona CRC, check sum and/or other relevant verifications. When theverification is valid and/or the CRC is verified the re-flash flag iscleared and/or reset and the process 7220 returns to step 7222 toreactivate the bootloader to activate the main microcontroller 32 tooperate in accordance with the new version of firmware stored in theflash memory 33 and enter the normal irrigation control operation (step7250). Alternatively, the process returns to step 7222 without clearingor resetting the re-flash flag and attempts to again re-flash thefirmware or return to the normal irrigation operations withoutre-flashing, when a valid version of the firmware is still accessibleand/or following a verification (e.g., step 7224).

The return to step 7222 can be implemented, for example to compensatefor those instances where multiple re-flash modules are occupyingmultiple mounting locations and the bootloader 33 c does not identify ahighest or most current version of firmware of the multiple re-flashmodules prior to initiating a re-flash. This way, the bootloadersequentially accesses the multiple re-flash modules and does notimplement a re-flash associated with those modules with the same orlower versions of the recently re-flashed firmware 33 a, whilesubsequently accessed re-flash modules with newer or high versions canbe utilized to again re-flash the flash memory 33. This operation of notchecking each re-flash module prior to implementing a re-flash cansimplify the bootloader code 33 c, which may be advantageous in thoseinstances where the memory space of the firmware 33 a available for thebootloader code 33 c is limited, as well as avoiding having to storere-flash versions and associated mounting locations and having to make adetermination of which re-flash version is to be utilized in a re-flashwhen a re-flash is to be employed.

FIG. 73 depicts a simplified flow diagram of a process 7320 to identifya re-flash expansion module and initiate a re-flash and/or a codereplacement of the firmware 33 of the main microcontroller 32. Asdescribed above, the process 7220 typically initiates the process 7320and the bootloader remains active to implement process 7320. In step7322 the bootloader queries and/or polls the one or more expansionmodules 65 in the module mounting locations 45 b to determine whetherany modules are re-flash modules. This inquiry can comprise a command toeach module and/or mounting location 45 b requesting a re-enumeration,requesting an identification of the module, requesting a version offirmware stored on the module and/or other such requests. Step 7322 canoptionally be excluded in those instances where the re-flash modules areknown through prior enumerations as described further above and below.

In step 7324, it is determined whether a reply is received from theexpansion module and/or mounting location 45 b. In some implementations,a time period is monitored and if a reply is not received from themounting location it is determined that a expansion module is notmounted in the addressed mounting location and/or the module mounteddoes not recognize communications sent based on a secondary bootloaderprotocol as fully described below. For example, the time period can beabout 2 ms, 4 ms, 5 ms or other relevant time periods. Further, the timeperiod can depend on many factors, such as the number of mountinglocations, whether one or more expansion housings 80 are coupled withthe controller, types of expansion modules expected to be incorporatedand/or other such factors.

When a reply is not received (e.g., within the time threshold) theprocess 7320 jumps to step 7340 to determine whether further mountinglocations or slots are to be evaluated. Alternatively, when a reply isreceived from an expansion module step 7326 is entered and the responsefrom the expansion modules is evaluated to determine whether theresponding expansion module is a re-flash expansion module. In thoseinstances where the module is not a re-flash module, the processcontinues to step 7340. When the module is a re-flash expansion modulestep 7330 is entered where a request is transmitted for a version of thefirmware image 33 d stored in the re-flash expansion module 65 g. Step7330 may be skipped when a version is provided with the reply to thepolling in step 7322. In step 7332, the version of the firmware of there-flash module is evaluated to determine whether it is newer and/orhigher than the current version of the firmware 33 a being utilized bythe irrigation controller 10.

When the current version of the firmware is newer than or the same asthe firmware image of the re-flash module the process 7320 continues tostep 7340. Alternatively, some embodiments include optional step 7334where the process attempts to identify whether the firmware image of there-flash module is the newest or highest version of multiple re-flashmodules coupled with the irrigation controller 10 by determined whetherthe version of the firmware image 33 d of the re-flash modules is neweror greater than firmware images of other re-flash modules. When one ormore other re-flash modules have a firmware image that is newer or has ahigher version of the firmware of the re-flash module being evaluated,the process 7320 skips to step 7340. Alternatively, in optional step7336 the mounting location 45 b and/or module identification is recordedand/or stored when the re-flash module being evaluated contains are-flash firmware image 33 d that is newer or greater than the currentversion 33 a and is newer and/or greater than firmware versions ofpreviously identified and evaluated re-flash modules. Other embodiments,however, do not attempt to identify which re-flash module 65 g has anewest version when multiple re-flash modules are incorporated into theirrigation controller 10. Instead, the process 7320 can optionally skipfrom step 7332 to step 7344 to implement a re-flash when a re-flashmodule 65 a is identified as having a version of the firmware 33 d thatis newer than the current version of the firmware 33 a. The newestversion is ultimately retrieved when multiple re-flash modules areincorporated into the irrigation controller 10, in these embodiments, bycycling through at least a portion of the process 7320 where successivere-flash modules are accessed in determining whether those modules havenewer versions of the firmware image.

Still referring to FIG. 73, in step 7340 as introduced above it isdetermined whether further mounting locations and/or modules are to bequeried to determine whether those mounting locations contain re-flashmodules. In those instances where further mounting locations are to beevaluated the process returns to step 7322 to query another mountinglocation and/or module. Alternatively, the process 7320 continues tostep 7342 to determine whether a mounting location or module has beenrecorded indicating that a re-flash module is mounted in a mountinglocation 45 b that contains a firmware image 33 d that is newer and/orhas a higher version number than a current firmware image 33 a stored inthe flash memory 33. When a mounting location has not been identifiedand recorded the process 7320 transitions to step 7240 of the process7220 of FIG. 72 where a verification of current firmware 33 a isperformed.

In those instances where a mounting location 45 b has been recordedand/or identified the process 7320 continues to step 7344 to initiate achallenge and/or authentication of the identified re-flash module. Thischallenge or verification can be similar to step 7124 of the process7120 of FIG. 71 and/or the authentication procedure of FIG. 28 and/or ofFIG. 24 as further described below. Step 7344 can also be an optionalstep in those embodiments when the expansion module is challenged and/orverified prior to initiating the bootloader code 33 c and the processes7220 and 7320 (e.g., in steps 7124 and 7126 of the process 7120 of FIG.71). In step 7346 it is determined whether the identified re-flashmodule is verified. When the module is verified, the process transitionsto step 7234 of the process 7220 of FIG. 72 to implement the re-flash ofthe firmware 33 a with the newer version of firmware 33 d stored in theidentified re-flash expansion module 65 g. Optionally, when the moduleis not verified, the process 7320 continues to step 7350 to determinewhether another re-flash expansion module was identified in steps7322-7336 that contains a firmware image 33 d that is newer than aversion of the current firmware 33 a utilized by the mainmicrocontroller 32. When another re-flash module was identified, themodule with the next highest version is selected and the process returnsto step 7344 to authenticate the module. When there are no otherre-flash modules identified with versions of firmware newer than acurrent version the process terminates and activates step 7240 of theprocess 7220 of FIG. 72 to initiate a validation (e.g., performs CRCtesting) of the current firmware 33 a in attempts to activate theirrigation controller 10 using the current firmware. In someembodiments, steps 7334, 7336, 7340 and 7342 are optional. In thoseinstances where they are not included, once a re-flash module with ahigher version firmware image is detected in step 7332, the process 7320skips to step 7344 to initiate an authentication of the expansionmodule. The process 7320 can then be repeated for each subsequent modulethat has a newer version of the firmware.

The above process 7320 is typically implemented by the bootloader 33 cof the main microcontroller 32. As such, the bootloader controls there-flash of the firmware 33 a. In some embodiments, however, some or allthe control of the re-flash can be transferred to the re-flash module 65g. For example, the main controller 32 can forward information about thecurrent version of the firmware 33 a as well as information of otherversions available from other re-flash modules coupled with the bus 39and/or the main microcontroller 32. The re-flash module 65 g can thenmake a determination whether it contains a version of firmware 33 d thatis newer than the current version 33 a in the flash memory 33 and/or ofother re-flash modules. In those instances where the module identifiesitself as having the higher version of firmware 33 d, it can direct theactivation of the bootloader 33 c to initiate a replacement of firmwareand/or control the copying of the newer version 33 d to the flash memory33.

Further, typically the re-flash of the firmware 33 a is implementedwithout the need for user interaction. This allows a streamlined processand provides users with the relevant versions of firmware without theuser having to implement the code replacement and/or without the usereven having to know or understand that a code replacement was takingplace. In other embodiments, however, additional steps can be included,for example, in one or more of the processes 7120, 7220 and/or 7320 thatprovide for user interaction and/or confirmation. For example, the usercan be notified (e.g., on the display 24 of the control panel 30 of there-flash and asked to confirm the re-flash (this confirmation can beachieved in some instances by the user inserting the re-flash expansionmodule 65 g, selecting a key 25 and/or other such confirmation), havingthe user select a firmware version (e.g., through user interface, keys25 and/or the like) when multiple versions are available and/or othersuch user interaction. Many embodiments, however, do not need userinteraction and can implement the code replacement or re-flash withoutuser input. Further, some embodiments notify the user of the re-flashbut do not need further user interaction.

Another variation of a smart expansion module 65 f is illustrated inFIG. 34. In this embodiment, the expansion module 65 f includes one orboth of a display 88 and a user input device 89, such as one or morekeys, buttons, knobs, or any other type of device to allow a user toinput information to the module. Although the module 65 f is illustratedwithout terminal inputs or outputs, some variations of this module 65 finclude inputs and outputs. The display 88 minimally acts as a statusindicator to indicate to the user a status of the operation of themodule 65 f. Additionally, the display functions to provide anadditional user interface as might be required in order for the user toprogram and implement the functionality of the expansion smart module 65f. Additionally, the input device(s) 89 provides a way for the user toenter data or otherwise program or configure the module 65 f. Thefirmware 33 b allows the microcontroller 66 a to drive the display andinterpret user interactions with the input device(s) 89.

In one embodiment, once the rotary dial 22 is turned to the “SmartModule” setting, the LCD 24 provides a list of the installed smartexpansion modules (and smart expansion modules having interfaceextension capabilities), e.g., modules 65 b, 65 c, 65 d, 65 e, 65 f.When this list appears, thanks to their built-in intelligence, thesetype of expansion modules have the ability to report their name andcapabilities. Through the data received from the expansion modules 65during the enumeration process (i.e., the process of the expansionmodules 65 self detecting their installation and reporting theirpresence, type and configuration information to the mainmicrocontroller), the main microcontroller 32 knows what module mountinglocations have modules 65 in them so it knows how many modules belong onthis list. Once the user selects the expansion module 65 which he/shewants to program from the list, by using the soft keys 25, the smartfeatures are activated and the selected interface extension module 65 ctakes control of the controller display (e.g., LCD 24) and provides theuser interface screens to the main microcontroller for display. Theavailability of an “exit” option on the menus created by the interfaceextension module 65 c allows exiting from the ‘user interfaceextensibility’ mode, bringing back the list of smart expansion modulesto the LCD 24.

Various expansion modules 65 and particularly smart expansion modulesmay be added to the controller to perform a variety of functions thatexpand the capabilities of the irrigation controller 10 beyond its basicirrigation functions. Other examples of functional expansion modules notspecifically described above that may be added to the controllerinclude: a latching solenoid module that sends a DC pulse along a wireto a latching solenoid operated valve; a wireless module having awireless transmitter (radio, optical, etc.) that sends a wireless signalto a receiver at a self powered valve; a feature module containing anextra feature such as cycle and soak, etc., not present in the originalcontroller; an alarm module for communicating fault conditions to ahomeowner, an alarm company or alike; an lighting module that provides alow voltage output signal to outdoor lighting system (similar to anirrigation output, but intended to operate lights); a fertigation moduleconnecting an automatic fertilization system and allowing the irrigationcontroller 210 to automate fertilization; a communication moduleconnecting the controller 10 to other communication channels and/ornetworks including the internet, etc.

Referring next to FIG. 24, a flow chart is shown that illustrates oneembodiment of the module enumeration process. Enumeration generallyinvolves the process of each expansion module 65 determining itslocation in the controller backplane 45, and reporting this informationand other details about the module to the main microcontroller.Initially, the modular controller is in normal operational mode (110),executing one or more irrigation programs or waiting to be programmed bya user. Many embodiments of the invention allow expansion modules 65 tobe inserted and removed during operation of the controller 10 withouthaving to power down the controller 10 or control panel 30. Since themain microcontroller 32 does not query for new modules, when a newexpansion modules is mounted to an expansion module mounting location 45b, the new module 65 detects its presence, determines which mountinglocation it is in, and announces its presence (along with its type orfunctionality, and the number of output stations it includes) (Step111). Typically, the expansion module 65 waits until the communicationbus is quiet and sends a signal, such as an announce message to the mainmicrocontroller. It is noted that in some embodiments, rather thansending a message (containing some data) to announce its presence, theexpansion module sends or causes an electrical signal to be output tothe main microcontroller, the characteristics of the signal or simply,its presence at the microcontroller, serve as an announcement of theexpansion module. The control unit receives the signal (e.g., announcepacket or message) from the expansion module and decides if it is anewly installed module (Step 112). If so, it adds the module 65 to atracking list so that the main microcontroller 32 knows which modules 65are present. The control unit will then respond to acknowledge the newexpansion module 65 (not shown). Since the module 65 expects to receivea response from the controller, if the module 65 does not receive anacknowledge packet or message back from the main microcontroller 32 ofthe control unit, the module will assume that a data collision hasoccurred, and it will wait a period of time (either random or fixedduration), and make another announcement attempt. In one embodiment, themodule performs a pseudo-random back off and retransmits the announcemessage (Step 113). That is, the module 65 waits and retries sending themessage. The amount of time can depend, for example, on the mountinglocation and different mounting locations can have different back offperiods. Once acknowledged, the main microcontroller 32 will initiate atwo-way challenge/authentication with the module (such as described withreference to FIG. 28). Additionally, the expansion module 65 providesany additional information (Step 114) needed to the main microcontroller32. Alternatively, the microcontroller 32 requests any requiredinformation from the expansion module. In accordance with severalembodiments, the main microcontroller 32 then stores any configurationdata for the expansion module in memory (Step 115). At this point, thecontroller (e.g., the main control unit/control panel 30 or the mainmicrocontroller 32) knows what type of expansion module is connected. Inpreferred form, configuration data includes data or parameters that isuser defined and is not specific to the characteristics of a givenexpansion module itself, but is data that is learned or programmed inthe use of the expansion module. For example, in one form, configurationdata for an input expansion module may include the types of sensorinputs that the input expansion module is coupled to. That is, theconfiguration data could include the fact that a given input expansionmodule is coupled to a moisture sensor (as opposed to a rain sensor orother type of input) or the number of inputs/outputs that are connected.These details are useful to the main microcontroller, but not evident inthe characteristics or functional capabilities of the expansion moduleitself (such as how many inputs or outputs the expansion module has,which is evident in the characteristics of the expansion module). Thus,configuration data can be user defined in use of the expansion module atthe installation.

In normal operation, the main microcontroller 32 continuously sendsrefreshing signals on a periodic basis to each connected module toconfirm that the module is still connected. For its part, the expansionmodule 65, replies to these refresh signals to let the controller knowthat it is still connected. If during operation, a given expansionmodule 65 is unplugged from the backplane, the main microcontroller 32will stop receiving responses to the refresh signaling sent by the mainmicrocontroller (Step 117). The microcontroller 32 then increments itretry counter (Step 118), and sends additional refresh signals until aresponse has still not been received from the expansion module after amaximum number of retry attempts (Step 119). At this point, the mainmicrocontroller assumes that the expansion module has been removed andde-enumerates the expansion module (Step 120). In other words, theexpansion module is removed from the list of enumerated modules 65. Inpreferred embodiments, the configuration data (including user definedconfiguration data) stored in memory is retained until another expansionmodule is mounted into the location of the removed module. In the eventthe new module (following steps 111-114) is a replacement moduleidentical in nature to the recently removed module, the sameconfiguration data is used for the replacement module. Advantageously, amodule replacing an expansion module does not need to be reconfigured.That is, it can use the already learned or programmed configuration dataas the previous module it is replacing. In one embodiment, upon theenumeration of a replacement expansion module, a copy of theconfiguration data stored in the memory of the control unit istransmitted to the expansion module and stored in the expansion moduleas well, since some configuration data may relate to a programmed oruser defined parameter of the control unit as it relates to itsinteraction with the expansion module.

In some implementations, the enumeration by one or more expansionmodules 65 can be restricted or limited during a re-flash and/or whilethe bootloader is operating. Communication over the bus 39 from modulesattempting to enumerate during a re-flash and/or while the bootloader isactive are typically not recognized by the bootloader and the bootloaderdoes not respond to these requests. As a result, if these enumerationsare not restricted expansion modules added while the bootloader isactive may continue to try and re-enumerate creating potentials forcollisions on the bus. In some instances, an expansion module waitsuntil the bus is silent before initiating an enumeration. This silencecan further be a silence for a predefined period of time (e.g., 10 ms,20 ms, 100 ms or other relevant time periods). When the expansion moduledetermines that it should enumerate (e.g., upon being inserted into thecontroller 10) the module monitors the bus looking for a silence period.Once the silence period is detected the expansion module initiates thetransmission of its enumeration communication. It is noted that in someimplementations the expansion modules may wait for additional periods,for example based on mounting location, back off times, and/or othersuch factors in attempts to further avoid collisions on the bus.

Further, to implement communication between the main controller 32 andthe re-flash expansion module 65 g, some embodiments further employ arelatively simple secondary bootloader protocol for communication on thebus 39 between the bootloader code 33 c and the re-flash modules 65 g.Employing a relatively simple protocol allows the bootloader code to berelatively small and/or compact. This can be particularly advantageouswhen the flash memory 33 has a limited amount of memory capacity and/orwhen attempting to limit the amount of flash memory occupied by thebootloader 33 c. For example, in some implementations, the flash memory33 can be limited to 128 Kbytes (e.g., when utilizing a microcontrollerchip, with only a portion of the limited memory (e.g., about 8 Kbytes)reserved for the bootloader 33 c). As such, some embodiments employ twodifferent communication protocols to communicate over the bus 39depending on the state of operation. A first protocol can be used duringnormal irrigation control operation, with the second relatively simpleprotocol utilized at least by the bootloader 33 c.

The bootloader protocol can limit the communications available over thebus 39. In some implementations, the bootloader protocol provides forfour communications:

Command/ Message ID Description Request 1 Sent by the controller'sbootloader to request that Version the re-flash expansion module forwardthe controller firmware version stored within the module. Request 2 Sentby the re-flash expansion module. It contains Version the version of theirrigation controller firmware Response image stored in the module.Request 3 Sent by the bootloader to request that the re-flash Pageexpansion module send a specified page of the firmware stored in themodule. Request 4 Sent by the re-flash expansion module forwarding Pagethe requested firmware image page. Response

In providing the second protocol, some embodiments further attempt tolimit and/or prevent confusion and conflicts with modules on the bus 39because of the two protocols. In some implementations, the bootloaderwhen activated maintains control over the bus 39 by limiting whichmodules communicate over the bus while the bootloader is active. Asdescribed above and throughout the specification, some embodiments areconfigured such that the modules upon insertion into a mounting location(and/or upon a reset, a time out, or other such conditions) enumeratethemselves to the main controller 32. This enumeration is postponeduntil a silent period is detected on the bus 39. Further, the modulesre-enumerate if a reply is not received from the main controller inresponse to an enumeration. Often this re-enumeration occurs when thereply from the main controller is not received within a threshold timeperiod. The bootloader 33 c, in some implementations, can maintaincontrol over the bus 39 by in part preventing sufficient silent periodsfrom occurring on the bus. As such, the modules do not enumerate orre-enumerate because a sufficient silent period is not detected.

Those expansion modules that can communicate with the bootloader and/orcan utilize the bootloader protocol comply with the bootloader protocolduring bootloader operation and/or re-flashing. In some implementations,addressing is utilized to focus communications to intended devices. Asintroduced above, some communications can additionally or alternativelyemploy a 9-bit communication protocol. These embodiments can utilize theninth bit in some implementations to indicate to receiving modulesand/or the controller that a communication is to be evaluated. Forexample, a communication can be configured such that a first character,packet or byte of the communication includes an 8-bit address with aninth bit set to a predefined level (e.g., set high). In the descriptionbelow the character containing an address with the ninth bit set isreferred to as address character.

A receiving module 65 (and/or controller 32), upon detection that theninth bit is set, evaluates the 8-bit address of the address characterto determine whether the communication is directed to the module and/oris to be further evaluated. Additionally in some instances, once amodule determines that a communication is not directed to that module,the module can effectively disregard further communications on the bus39, with the exception of identifying an address character, until asubsequent communication is detected that contains an address characterwhere the module again evaluates the address of the address character.For example, the modules can be configured (e.g., using their UART) sothat they are alerted when an address character is received, anddisregard or ignore other communications with a character that has theninth bit cleared when the previous address character was not directedto that module.

When an address character is received, the expansion module 65 and/orcontroller 32 checks the address byte of the address character (e.g.,through firmware) to determine whether it matches the mounting locationor slot number 45 in which the module is mounted or a controlleraddress. When it does then the firmware sets one or more flags (e.g., aUART flag) so that it is alerted for subsequent communication packetsand/or characters even when the ninth bit is cleared. This allows themodules to receive additional communications. When the address does notmatch the mounting location, the firmware disregards the data byte(s)and/or payload, and the module controller or CPU 66 a will not bealerted until another address character is received.

Utilizing the address character allows modules to disregardcommunications until a communication is directed to that module. Thiscan free up resources of the modules to perform other functions and/orallow the module to enter an idle or sleep state rather than having tocontinue to monitor communications on the bus. Additionally, thiscommunication protocol can be implemented through relatively minimalcode reducing memory resources.

The bootloader protocol can additionally or alternatively utilizeaddressing in distinguishing bootloader protocol communications. In someimplementations, one or more addresses can be defined as special orbootloader protocol addresses. Re-flash modules 65 g and/or otherexpansion modules 65 capable of communicating with the bootloader 33 ccan detect the one or more address characters identifying that thesecommunications are to be further evaluated. For example, a first address(e.g., an address of 001 or substantially any other relevant predefinedaddress) can be defined as a bootloader address. Expansion modules 65capable of communicating with the bootloader 33 c recognize the addressand further evaluate the communication, and those devices that cannotcommunicate with the bootloader will disregard the communication.

FIG. 74 depicts simplified block diagram representations of a series ofcommunications 7420-7423. The first representation shows a communication7420 that includes a destination address character or byte 7426 (thatcan include a ninth bit 7424 that is set, in some implementations) alongwith a data or payload portion 7428. Expansion modules 65 and/or themain controller 32 (and potentially other devices coupled with the bus39) detect the communication, detect the address character 7426,evaluate the address and take appropriate action should thecommunication be addressed to that module or the controller. Thiscommunication is commonly utilized in many embodiments to implementnormal operation communications over the bus 39. The secondrepresentation shows a broadcast communication 7421 that similarlyincludes a destination address character 7430 (which can have the ninthbit set) and a data portion 7432. In this example, however, thedestination address 7430 is a predefined address that is designatedand/or recognized as a broadcast address. This predefined broadcastaddress is recognized by more than one module and/or devices on the bus(and in some instances all the modules and/or devices on the bus) as acommunication that should be further evaluated and/or acted upon. When abroadcast communication 7421 is received, the modules 65 will accept itand the remainder of the communication as if the communication had beenaddressed to the receiving module. It is noted that in someimplementations the modules and/or devices receiving the broadcastcommunication 7421 do not respond to the broadcast communication with anacknowledgement, which can reduce bus traffic and/or bandwidth usage.

The third representation of FIG. 74 shows an example of a bootloadercommunication 7422 that includes a predefined bootloader designationaddress 7434 (which in some instances has the ninth bit set), asecondary address 7436 and a bootloader data or payload portion 7438.Modules, the bootloader 33 c and/or other devices coupled with the bus39 that can communicate utilizing the bootloader protocol recognize thepredefined bootloader designation address 7434 and continue to furtherevaluate the communication 7422. This predefined bootloader designationaddress 7434 can be substantially any relevant address that ispredefined as the bootloader designation address (e.g., an address of002 or substantially any other relevant address). Those devices that areunable to utilize the bootloader protocol and/or cannot communicate withthe bootloader 33 c disregard the communication (and in some instancescontinue to disregard further communications on the bus 39 until asubsequent communication is received that has an address character withits ninth bit set). Those modules and/or the controller that can utilizethe bootloader protocol detect the predefined bootloader designationaddress 7434 and continue to evaluate the secondary address 7436 todetermine whether the bootloader communication is directed to thatmodule and is to be further acted upon. For example, when the secondaryaddress matches the mounting location within which the module ispositioned, the module can extract the payload and take appropriateaction (e.g., identifying one of the predefined communication commandsor messages, such as request version, request version reply, requestpage, request page reply, or other relevant commands or messages).

As described above, some embodiments further provide for a predefinedbroadcast address (e.g., an address of 001). The bootloader protocol cansimilarly utilize the broadcast address in transmitting communications.Still referring to FIG. 74, the fourth representation shown in FIG. 74is an example of a bootloader communication 7423 that includes thepredefined bootloader designation address 7434 (which in some instanceshas the ninth bit set), a secondary address 7440 that is the broadcastaddress and a bootloader data portion 7442. This communicationconfiguration 7423 allows one device on the bus (e.g., the bootloadercode 33 c) to broadcast a single bootloader communication that the otherdevices on the bus 39 receiving the communication and capable ofutilizing the bootloader protocol will further evaluate and/or takeappropriate actions depending on the contents of the data portion 7442.In some instances, similar to the broadcast communications describedabove, modules 65 capable and/or configured to receive and process thebootloader broadcast communications 7423 do not issue acknowledgement tothe broadcast communication. These communication configurations allowthe modules, controller 32 and/or bootloader 33 c to communicate overthe bus and in part limit or avoid confusion on the bus.

The example communications 7420-7423 of FIG. 74 are shown with theaddresses preceding the data portions. It is noted, however, that thecommunications do not have to be configured in this order, and instead,the addresses can be positioned in substantially any relevant orderand/or location within the communication that can be extracted by thereceiving device.

As with other smart modules, the re-flash modules 65 g can be configuredto monitor the bus 39 and initiate communicates in response to variousconditions. For example, in some embodiments, the re-flash modules caninitiate an enumeration as described above when the module detects thatit is inserted into a mounting location 45, it is reset, themicrocontroller 32 requests enumeration, the bus 39 is silent for apredefined amount of time and/or when other conditions occur. As afurther example, when a re-flash module detects that the bus 39 has beensilent for a predefined reset period of time (e.g., such as 500 ms, 100ms, 50 ms or other such relevant periods) the re-flash module 65 g caninitiate reset code that starts operations as if the module had justbeen mounted or plugged into a mounting location, which can include theenumeration process.

Many re-flash modules 65 g additionally provide functionality beyond there-flashing of the firmware 33 a of the irrigation controller 10, suchas flow measure and/or control, ET monitoring, other types of sensortracking, actuate irrigation valves, provide additional or alternativecommunication ports and/or modes of communication (e.g., providingwireless communication), enhanced communication security, provide adisplay, provide additional user interface (e.g., additional buttons,dials and the like), provide additional operating languages, irrigationinitiation, additional communication ports to the irrigation controller10 and/or substantially any other relevant functionality. In someinstances, a current version of the firmware 33 a of the main controller32 may not be able to utilize the irrigation control functionality orother functionality provided by an expansion module 65. As a result, theexpansion module may contain a new version of the controller firmware 33d that is to replace the current firmware of the controller to allow atleast the utilization of the functionality provided by the module.Additionally or alternatively, the new version of the controllerfirmware 33 d can provide additional functionality, enhancements, fixesto one or more problems with a prior version of firmware and the like.

In some embodiments, re-flash modules 65 g, as well as other modules,can transition to an idle or sleep state. This can reduce powerconsumption, communication traffic over the bus and/or have other suchbeneficial effects. The transition to an idle state can be based on timethresholds, power consumption conditions and/or other such factors. Forexample, a re-flash module may transition to an idle state when apredefined idle time period expires without receiving a communicationaddressed to that module (or a broadcast communication in thoseembodiments that employ broadcast communications). Further, some modulesthat contain triac input/outputs that do not receive communications orpackets addressed to them over a predefined idle threshold period (e.g.,a period of 10 seconds, 5 seconds or substantially any other relevanttime threshold) can effectively transition to an idle state turning offoutputs. Further, expansion modules can be configured to recognizebroadcast communications and/or the predefined broadcast address 7430.That way the control unit 30, main microcontroller 32 and/or otherdevices on the bus can at least send a communication to shut down orforce one or more modules 65 to an idle state prior to the predefinedidle threshold period by issuing an “all” sleep or idle commandglobally. In some implementations, the broadcast communication can be afixed communication and/or packet and the controller can issue thestring without a stack.

As described above and further below, the bootloader 33 c can attempt tolimit communication collisions on the bus 39 that can interfere with thebootloader operation. As such, in some embodiments, the bootloader 33 cadditionally monitors the communications over the bus and ensures that acommunication is transmitted over the bus within at least the period oftime that is less than the wait period to initiate an enumeration and/orthe predefined re-enumeration threshold period that could trigger are-enumeration. For example, in some implementations, the bootloader 33c initiates a communication at least once every prevention thresholdperiod when other communications are not being transmitted and/orreceived. These additional prevention communications can be sent evenwhile the bootloader is waiting for a flash page write cycle tocomplete. This prevention threshold period can be substantially anyrelevant period depending on the parameters of one or more expansionmodules 65, such as 8 ms, 5 ms, 1 ms and/or other such relevant periods.These additional prevention communications can be dummy communicationsthat do not include a valid address and/or payload, can be a broadcastcommunication (e.g., designating status information) and/or other suchcommunications. The prevention communications can additionally addresspotential conflicts or collisions on the bus from modules 65 that areenumerated with the irrigation controller 10, modules that have not yetstarted to enumerate and/or modules that are still trying to enumerate(typically, these modules continue to wait for a sufficient silenceperiod).

Additionally in some instances, the bootloader 33 c following thecompletion of a re-flash of the flash memory 33 a stops communicatingover the bus in attempts to maintain the bus in a silent state for apredefined threshold period. By keeping the bus in a silent state atleast those expansion modules that are in a bootloader statecommunicating using the secondary protocol will detect the silence onthe bus and exit a bootloader state and/or activate a resettransitioning these modules from the bootloader state to a normaloperating state. In some implementation, this silent state is initiatedat a start up of the control unit and/or main microcontroller 32 as wellas following a re-flash so that modules return to normal (ornon-bootloader) operating states. Alternatively or additionally, thebootloader and/or controller can issue a command that directs modules toexit the bootloader state.

FIG. 75 depicts a simplified flow diagram of a process 7520 of anoperation of a re-flash module 65 g according to some embodiments. Instep 7522 a determination is made whether a communication has beendetected and/or received by the re-flash module 65 g over the bus 39.When a communication has not been received the process skips to step7550 to determine whether the module is in an idle or sleep state.Alternatively, when a communication has been received the communicationis evaluated to determine whether a previous communication was receivedwith an address character and an address associated with the module orthe current communication includes an address character (e.g., a bytewith the ninth bit set) or some other indicator that the module is tofurther evaluate the communication. When there is no address characterand the module is not continuing to monitor communications based on aprior received address character the process skips to step 7550. Ininstances where an address character or other indication is identifiedstep 7526 is entered and an address is extracted from the communication,for example, from the address character.

In step 7530 the address is evaluated to determine whether the addressmatches a mounting location into which the module 65 g is mounted and/orwhether the address is a broadcast communication (e.g., containing apredefined broadcast address recognized by the module), and thus,identifying the communication as a communication to be acted upon. Whenthe communication is directed to the module 65 g, the process 7520continues to step 7532 to extract the payload and/or data from thecommunication. In step 7534, the extracted payload is assessed todetermine whether an action is to be taken. In those instances where anaction is to be taken step 7536 is entered where appropriate action isinitiated. This action can be substantially any action that can beimplemented by the module 65 g such as, but not limited to, enter abootloader state and/or utilize the bootloader protocol, implement flowmonitoring, implement ET evaluation, activate one or more valves,monitor sensors, enumerating, shifting to an idle state (which maytrigger step 7582), generating an acknowledgement, and/or substantiallyany other relevant action.

Following step 7536 and when it is determined in step 7534 that noaction is to be taken (e.g., the communication is a statuscommunication, an acknowledgement that does not trigger further action,a dummy communication, or other communication where no action is needed)the process continues to step 7540 where the action performed and/orcommunication is further evaluated to determine whether a response orreply is to be transmitted (e.g., sending an acknowledgement, forwardingstatus information, forwarding results detected by a sensor, returningan ET value and/or evaluation, returning a flow value and/or evaluation,and/or other such relevant responses). The process returns to step 7522when a response is not to be sent. When a response or reply is to betransmitted, step 7542 is entered where the response or reply isconfigured and/or formatted, and transmitted. The process 7520 thenreturns to step 7522 to determine whether further communications arereceived.

In those instances where it is determined in step 7530 that theextracted address does not match the mounting location and/or is not abroadcast address, step 7544 is entered where the communication isfurther evaluated to determine whether it contains a predefinedbootloader designation address 7434. As described above, someembodiments utilize one or more predefined bootloader designationaddresses that can be recognized by those modules capable ofcommunicating with the bootloader and/or can utilize the bootloaderprotocol. Step 7544 identifies those bootloader communications bydetecting the predefined bootloader designation address 7434. When theaddress is the predefined bootloader designation address, step 7546 isentered where the communication is further evaluated to extract asecondary address 7436, 7440 to determine whether the secondary addressmatches the mounting location 7436 within which the module 65 g ismounted and/or is a broadcast address 7440. In those instances where thesecondary address matches the mounting location or is a broadcastaddress, the process 7520 continues to step 7532 to extract the payload,to step 7534 to determine whether action(s) is to be taken, to step 7536to implement appropriate actions when actions are to be performed (e.g.,identify a version of re-flash firmware 33 d stored on the re-flashmodule 65 g, retrieve a page or portion of the re-flash firmware 33 d tobe forwarded to the bootloader 33 c, and the like), to step 7540 todetermine whether a response/reply is to be generated, and to step 7542to communicate a response (e.g., transmitting a version of the re-flashfirmware 33 c, transmitting a portion of the re-flash firmware 33 c,acknowledgement, and/or other such response) when appropriate.

Alternatively, when it is determined in step 7544 that the communicationis not a bootloader communication and/or when it is determined in step7546 that the secondary address does not match the mounting locationand/or is not a broadcast address, the process skips to step 7550. Instep 7550, the module evaluates its current state of operation todetermine whether it is in an idle or sleep state or mode. When themodule is in an idle state, step 7580 is entered where the idle state ismaintained. The process 7520 continues to step 7552 when the module isnot in the idle state to determine whether a communication has beenreceived that has been addressed to the module 65 g within a predefinedidle time threshold or period (or a broadcast communication has beenreceived in those embodiments that employ broadcast communications). Theprocess continues to step 7580 to enter the idle state whencommunications have not been received within the predefined idle timethreshold.

Step 7554 is entered when the predefined idle time threshold has notbeen exceeded to determine whether the bus 39 has been silent for apredefined reset threshold or period. When the reset threshold has beenexceeded the re-flash module 65 g can initiate reset code and startoperations as if it has just been plugged into a mounting location,which can include the enumeration process in step 7556. Alternatively,the process continues to step 7560 to determine whether the module 65 gis in a bootloader mode (e.g., in a mode to communicate with thebootloader 33 c and/or utilize the bootloader protocol). When it isdetermined that the module is not in the bootloader mode, the processskips to step 7566. Step 7562 is entered when the module 65 g is in thebootloader mode to determine whether the bus 39 has been silent for apredefined exit bootloader mode threshold. The process enters step 7564when the bus has been silent for the exit bootloader threshold where there-flash modules 65 g triggers firmware 33 b to exit the bootloader modeor state and/or to activate a reset transitioning from the bootloadermode to a normal operating state (e.g., that can allow the module toprovide other functionality when such additional functionality isprovided by the re-flash module).

Still referring to FIG. 75, when the bus has not been silent for theexit bootloader threshold the process 7520 continues to step 7566 todetermine whether the module has re-enumerated during this silent periodon the bus 39. Step 7570 is entered when the module 65 g has notre-enumerated to determine whether the bus 39 has been silent for are-enumeration threshold period. In step 7572, the module 65 gre-enumerates when it is determined in step 7570 that the bus has beensilent for the re-enumeration threshold.

The process 7520 returns to step 7522 to continue monitoring forcommunications over the bus 39 following the reset in step 7556 or thetransition from the bootloader mode to the normal mode of step 7564.Similarly, the process returns to step 7522 when it is determined instep 7566 that the module 65 g has enumerated during the silent periodon the bus or when it is determined in step 7570 that the bus has notbeen silent for the re-enumeration threshold.

The process 7520 is an example process that can be implemented by are-flash module 65 g or other module capable of operating in thebootloader mode and/or communicating using the bootloader protocol whenemployed. In some embodiments, one or more of steps 7552, 7554, and 7570are not implemented and/or are optional steps. The module can operatewithout employing one or more of these steps (e.g., receiving commandsto reset (step 7556) and/or exit the bootloader mode (step 7564)).Similarly, the threshold periods can be substantially any relevantthreshold period. Further, the threshold periods identified in theprocess 7520 may vary depending on a state of operation of the module 65g, the main microcontroller 32 and/or the irrigation controller 10.Still further, in some embodiments, these thresholds can be adjustedand/or altered during operation, for example, depending on a state ofoperation of the module 65 g, the main microcontroller 32, theirrigation controller 10, an irrigation system, and/or based on commandsfrom the bootloader 33 c, the main microcontroller 32 and/or a centralcontroller in communication with the irrigation controller 10.

FIG. 76 depicts a simplified block diagram of memory structures of theflash memory 33 of the control panel 30 and the memory 68 of a re-flashexpansion module 65 g according to some embodiments. As described above,flash memory 33 stores the firmware 33 a that includes the bootloadercode 33 c that when implemented by the main microcontroller 32 (see FIG.11) communicates with the expansion module 65 g, and the applicationand/or programming code 7622 that when implemented controls the mainmicrocontroller during operation to at least implement irrigationcontrol functionality. The memory 68 of the re-flash module 65 includesa re-flash code 7624, and optionally can additionally include one ormore function application codes 7626. The re-flash code 7624 providesfor communication with the bootloader 33 c and controls the transfer ofthe re-flash image 33 d. The re-flash code 7624 further includes and/oraccesses the re-flash image 33 d and allows the module to communicatewith the bootloader 33 c and forward the re-flash image to the controlpanel 30. The version 7628 of the firmware image 33 d can additionallybe stored in memory 68, typically with and/or as part of the re-flashcode. The application code 7626 when implemented can provide additionalfunctionality such as flow control, ET functionality, languageselection, valve activation and/or other such implementations.

In some embodiments, the firmware image 33 d is stored in memory 68 onthe re-flash module 65 g in an encrypted form. Typically, the moduledoes not decrypt the image and further typically does not have thecapabilities and/or authorization to decrypt the firmware image.Instead, the firmware 33 d is transferred (typically in portions orpages at a time) to the control unit 30 in the encrypted form.Maintaining the firmware image 33 d in the module 65 g in an encryptedform provides protection of the firmware image. Further, the firmwareimage is transferred to the control panel 30 in the encrypted form andthe bootloader contains the key to decrypt the image to be stored in theflash memory 33 a providing additional security and/or protection sothat even if the image is intercepted during transfer it is stillencrypted. Further, in some embodiments, prior to initiating a transferof the firmware image 33 d, the re-flash module 65 g performs averification and/or validation of the firmware image 33 d. Thisvalidation is performed in an attempt to ensure that the image iscomplete and accurate before allowing the firmware image 33 d to besupplied to the bootloader 33 c. The validation can be substantially anyvalidation. For example, the validation can include a CRC 7630 of theencrypted firmware image prior to initiating a transfer. In someembodiments, the firmware image 33 d is validated prior to beingencrypted and stored in the memory 68 on the module 65 g. For example, aCRC can be performed on the unencrypted firmware image and this CRCvalue 7632 can be incorporated within the re-flash image 33 d, which isthen protected, such as by providing password protections, encrypting orotherwise protecting, for example by applying convolution (bit, byte,block or the like), applying exclusive OR (bit, byte, block level or thelike), data encryption standard (DES), triple DES (3DES), substitution,RSA (Ron Rivest, Adi Shamir, and Leonard Adleman), digital signaturestandard (DSS), scrambling, digital signature algorithm (DSA), keyencryption, public key encryption (PKI), CipherSaber, Rivest Cipher 2(RC2), Rivest Cipher 4 (RC4), rearranging, content scrambling system(CSS), transposition, a combination of substitution and transposition,advanced encryption standard (AES), Diffe-Hellman (DH), secure hashalgorithm (SHA), message digest algorithm (MD5), pretty good protection(PGP), and/or other such protections and/or combinations of protections.The CRC value 7632 is then encrypted with the firmware so that thefirmware upon copying to the flash memory 33 can be validated when thebootloader decrypts the copied image. Further, CRC value 7630 of theencrypted firmware image allows the re-flash module 65 g to perform thevalidation of the encrypted firmware image without having to decrypt thefirmware image prior to initiating communication of the image to thecontrol panel 30. The microcontroller 66 a of the re-flash module 65 gfurther implements a portion of the firmware 7624 to allow themicrocontroller to perform the validation of the firmware, forward theencrypted firmware image 33 d to the control panel 30, communicate withthe control panel, provide additional functionality and/or other suchoperations of the module.

Additionally or alternatively, some embodiments provide modules that donot include a microcontroller 66 a. FIG. 77 depicts a simplified blockdiagram of a smart module 65 h according to some embodiments that issimilar to the smart module 65 g illustrated in FIG. 70, and stores aversion of firmware 33 d in the memory 68. The version of the firmware33 d can replace the firmware 33 a of the control panel 30, which canprovide the control panel with enhanced features, fix problems with aprior version of firmware, provide additional communication capabilitiesand the like. When this re-flash module 65 h is mounted with thecontroller 10, the main microcontroller 32 detects its presence (e.g.,through polling, power signal, and/or other such indication) that moduleis present. The microcontroller 32 can further detect the memory 65 andthat the memory contains the new firmware 33 d, which can be pulled bythe bootloader to overwrite the portion of the current firmware.

As described above, some embodiments provide for the modules 65 toenumerate. One embodiment for a module to determine its position withina plurality of expansion module mounting locations 45 b is to have pulsecode modulated (PCM) coded pulses sent to each connector 47. Thisensures a robust digital signal for the expansion modules to use indetermining which mounting location they are attached to and requiresonly a single signal pin at the module connector 57. The PCM patterndelivered is unique for each connector 47. The expansion module 65 seesthis PCM pattern and determines which mounting location it is attachedto since it knows what PCM coded signals match with which mountinglocation 45 b. FIGS. 29-31 show the details of the PCM signal sent tothe expansion modules 65. The PCM signal 85 has a frame SYNC marker toallow the module 65 to know that a PCM stream is about to arrive. Inthis embodiment, the SYNC marker consists of a pulsed duty cycle of 60%low (“6 t” in FIG. 29) followed by a 40% high (“4 t” in FIG. 29). Themodule microcontroller 66 a can either use an interrupt to detect thefalling edge of the SYNC marker, or use rapid polling to detect it. Eachdata bit in the PCM signal 85 is then sent using a duty cycle of 25% lowfollowed by 75% high to represent a logic ‘0’ or a duty cycle of 75% lowfollowed by 25% high to represent a logic ‘1’. A total of 7 bits aresent allowing for a total of 2 to the power of 7=128 modules 65. ThisPCM technique requires only one data line versus the normal seven datalines required to represent 128 unique module addresses. Anyone skilledin the art will easily realize that changing the number of bits, theduty cycle of either the bits or SYNC marker, using an alternate styleof SYNC marker, or eliminating the SYNC marker altogether, are obviousalternate embodiments. One embodiment of the technique for generatingthese PCM signals is using a digital device, such as a microcontroller(e.g., microcontroller 32) or other logic device that will generate aseries of pulse streams as shown in FIG. 30. At each module connector47, a combination of low-cost diodes, as shown in FIG. 31, is then usedto mix these pulse streams to create a unique PCM slot identifier foreach module. The diode arrangement technique is cost-effective whenthere are a large number of module mounting locations (e.g., more thanfour in the housing 20 or provided through expansion housings(s) 80) asit requires less pins from the pulse stream generator than the number ofslots. If the digital device generating the PCM codes has sufficientpins, this device could directly generate the signal waveforms as shownin FIG. 31, eliminating the diodes. Other obvious embodiments, to anyoneskilled in the art, will be to use a different form of serial datatransmission other than PCM. The advantage of this embodiment is the useof a unique digitally encoded identifier signal for each module 65consisting of fewer signal lines per module connector 47 than wouldnormally be required to represent the total number of module connectorsin a modular irrigation controller.

In another preferred embodiment for the expansion module to determineits location to report back the main microcontroller 32, each modulemounting location 45 b is identified by the combination of two inputsignals. One is an analog signal and the other is a frequency signal.The analog signal is used to identify the module mounting location of asingle module within a group of expansion modules (GOM) and thefrequency signal is used to identify what group of expansion modulessuch module belongs to, for example, the irrigation controller 10 isconsidered as the first group of modules (GOM1), whereas groups ofexpansion modules in additional expansion housing(s) 80 would beconsidered in another group of expansion modules. For example, the firstexternal expansion housing 80 which is daisy-chained to the irrigationcontroller 10 is considered the second group of module (GOM2). And ifthere is another external expansion housing 80 which is coupled to thefirst external expansion housing, it is considered to be the third groupof module (GOM3), and so on. When used in combination, the analog andfrequency signals give a unique identifying address to each module inthe system. The analog signal is a voltage divider network may be formedin the backplane circuitry 46 and is formed by 1% resistors that areconnected in series. Each module mounting location 45 b will be assignedto a pre-determined voltage signal which is between the logic ground andVCC. (For example: In this case, there are four different voltages forfour different module mounting locations 45 b. Module mounting location1 will be assigned to 0.5V, module mounting location 2 will be assignedto 1V, module mounting location 3 will be assigned to 1.5V, and modulemounting location 4 will be assigned to 2V). This same voltage dividernetwork will also be applied to the backplane circuitry of any externalexpansion housing 80. In order to distinguish between groups of modules(which expansion housing), the frequency signal is initially generatedby the main microcontroller 32 of the irrigation controller 10. Thissignal will be divided by 2n (n=1, 2, . . . ) by a frequency dividercircuit in the external expansion housing 80 that is daisy-chained tothe irrigation controller 10. It will continuously be divided by another2n by a subsequent frequency divider circuit in the second externalexpansion housing 80 if connected. In one embodiment, the frequencydivider circuit is a simple flip-flop or frequency counter device thatwill be embedded in the external expansion housing 80. In operation, theexpansion modules 65 store a table of what voltages and frequenciescorresponds to what module mounting location of what housing (either themain controller housing 20 or an expansion housing 80).

A further preferred embodiment for the expansion module to determine itslocation to report back the main microcontroller 32 uses a low costmodule microcontroller, a resistor and a capacitor to physically locatethe expansion module to its physical module mounting location. Inoperation, each connector 47 has a single dedicated pin (e.g., ENUM-RCX)that has a single dedicated resistor (e.g., see resistor 86 in FIG. 16)connected to ground or circuit reference. The value of these resistors86 is different on the backplane circuitry 46 for each module mountinglocation 45 b. Typically, there might be from four to twelve modulemounting locations in an enclosure (although only 4 are illustrated inFIGS. 3-6). However, this technique is not limited to that range. Theresistor value might be assigned as powers of two, such as 1,000 Ohms,2,000 Ohms, 4,000 Ohms, etc. or some other range and step size in value.On the circuitry 66 of the expansion module 65, there is a singlecapacitor (see capacitor 87 of FIG. 14) connected to the samecorresponding pin (e.g., ENUM-RC) and this capacitor 87 is connected toa reference voltage, such as supply voltage, circuit reference orground, or some other voltage. The junction of the capacitor 87 and theresistor 86 is also connected to the input pin (e.g., AIN0 of FIG. 14)of the module microcontroller 66 a. When the expansion module isinstalled into a module mounting location 45 b, a circuit is closedincluding the resistor 86 which charges the capacitor 87 to somevoltage. This could be performed by configuring this processor pin as anoutput pin and driving it to the processor supply voltage. Upon chargingthe capacitor, the module microcontroller then configures the pin to bean input or sensing pin and allows the capacitor 87 to discharge throughthe resistor 86 that is located on the backplane circuitry 46 and thenmeasure the time it takes to discharge the capacitor 87. The capacitorvalues are the same on all plug-in modules. Therefore, since theresistor values are different depending on which mounting location it iscoupled to, the time constant is different for every mounting location45 b because the resistor located on the backplane circuitry 46 forms aresistive-capacitive (RC) time constant with the module capacitor 87.The microcontroller measures the amount of time required to dischargethis RC circuit, and based on the values measured compared to a storedtable of known values corresponding to each mounting location 46 b,determines which module mounting location 45 b that expansion module 65has been installed into. This measurement could be made by a generalpurpose timer/counter, or program cycle-counter in the software of themicrocontroller, and could use an analog comparator input such as isfound on many microcontrollers to increase the accuracy of themeasurement. The module mounting location, once detected, is reported bythe expansion module 65 to the main microcontroller 32. As a result, theuser can see and know which station numbers, valves or other devices areassociated with the expansion module. In alternative embodiments, ratherthan measuring the time to discharge, the time to charge is insteadmeasured and will achieve the same result.

In preferred embodiments, since the main microcontroller 32 has an openarchitecture adapted to work with and share data with expansion modules65, the main microcontroller 32 can make sure the expansion module 65 orthe external expansion housing 80 to which it is communicating is“legitimate”. Before establishing a normal communication activity, themain microcontroller 32 and the module microcontroller 66 a conduct anauthentication scheme. In one embodiment, this is accomplished byexchanging challenge codes and response codes. For example, as describedabove with reference to FIG. 28, this “mutual authentication” scheme canbe initiated by either the main microcontroller 32 or the expansionmodule microcontroller 66 a. In the preferred embodiment, the mainmicrocontroller 32 sends a random value (challenge) to the modulemicrocontroller 66 a. The module microcontroller 66 a, then processesthis value by passing it through its secret authentication algorithm.The resulting value (response) is sent back to the main microcontroller32. The main microcontroller 32 processes the challenge value throughthe identical secret authentication algorithm. The response value comingfrom the module microcontroller 66 a is compared to the value expectedby the main microcontroller 32. If these values match, the module isrecognized to be “legitimate” by the microcontroller 32 and theirrigation controller 10 resumes its normal operation. If the values donot match, the main microcontroller 32 displays a “rogue device” alerton LCD 24.

Historically, dealing with a large number of heavy gauge wires extendingfrom the irrigation controller to each station on the site has been anissue of intense labor, rising cost and wire mapping complexityespecially in large sites such as golf courses and cemeteries. In oneembodiment, this problem is solved by introducing a special type ofexpansion output module, namely a ‘decoder module’, plugged into anexpansion module mounting location 45 b of the irrigation controller 10which will require just a single wire pair to connect to plurality ofdecoder enabled station valves on the site. This greatly minimizes thewiring requirements by having just a single pair of wires be connectedto the controller. Stand-alone specialty controllers that work withdecoder valves exist in the irrigation industry. However, one embodimentof the invention provides this decoder functionality in an expansionmodule to a modular controller that can also operate with other types ofregular station expansion modules 65, input expansion modules 65 a, andsmart expansion modules 65 b, 65 c, 65 d, 65 e, 65 f, 65 g that co-existwith the decoder type outputs. In addition, the use of smart expansionmodules in combination with a decoder output module allows the smartexpansion modules 65 b and 65 c to control the decoder outputs of adecoder module in a powerful manner not possible with any othercontrollers in the industry. The components of the decoder module aresimilar to the components found in FIG. 18; however, they may notinclude any inputs 67. The decoder module includes at least one outputsignal 83 (a decoder output) that sends signaling to actuate selectableones of a plurality of decoder-based valves each coupled to the singlewire pair coupled to the output signal 83. Additionally, the decodermodule may have multiple decoder outputs to independently controlmultiple sets of decoder-based irrigation valves. In accordance with theexecution of an irrigation program, the microcontroller indicates to themicrocontroller 66 a of the decoder module which irrigation valves areto be actuated, and the microcontroller 66 a of the decoder module sendsthe appropriate signaling to its output terminals to address and actuatethe desired valve(s).

Each expansion module 65 (and likewise modules 65 a, 65 b, 65 c, 65 d,65 e, 65 f) contains an independent microcontroller 66 a andcommunicates with the main irrigation microcontroller 32 to report itscapability to the controller 10. In the presently preferred embodiment,the microcontroller 66 a of the expansion module 65 is an ATMEGA8L-8ACmicrocontroller. The controller 10 then adjusts its operationaccordingly based on the module capability. For example, if a newexpansion module is detected with a 4-station capacity, then thecontroller 10 will add only an increment of 4 stations to the ‘totalavailable’ in the programming menus. This flexibility of employing aplurality of expansion modules 65 provides operational and economicadvantages to the contractor who no longer has to stock, install andlearn to operate completely different controllers for different types ofapplications. By allowing different expansion module types to be mixedon a single controller, modular controllers in accordance with severalembodiments of the invention provide the contractor with virtuallyinfinite flexibility to tailor controller outputs to the unique set ofneeds of each individual site. For example, a site may have two or threevalve locations that are difficult to access. The contractor could addwireless output module(s) to the controller and install wireless valvesin these locations, while using lower cost AC output modules andstandard solenoids for the other valves in the system.

It is common for prior art irrigation controllers to detect a shortcircuit caused by a mis-wired or a malfunctioning valve and suspend thewatering. Those controllers typically assigned the responsibility ofreading the short condition and alleviating the problem to the mainmicrocontroller which is typically housed within the control panel.However, this responsibility of the main microcontroller introducesadditional burden on the communication path, causing a delay incorrective action before undesirable effects take place. It is an objectof another embodiment of the invention to move the short circuit andover-current detection (mis-wired or malfunctioning valve might haveshort circuit preventing the normal operation) out of the control panel30 and into the expansion modules 65, thus bypassing the bottleneck ofthe bus 39 and the main circuitry 31 (shown in FIG. 15), and having theability to detect and take action within milliseconds. This is madepossible due to the fact that the module microcontroller 66 a has enoughprocessing power and it is connected directly with the valve actuator(not shown). The module 65 takes immediate action, and then at itsleisure, notifies the main circuitry 31. The main circuitry 31 does itstraditional job of sorting out the error conditions and displaying thestatus to the user. When the module 65 detects this short orover-current condition, it turns the valve off before any damage isdone. The user will also be notified of the problem. In one embodiment,the short circuit and over current detection is implemented in the formof a current sensor circuit in the modules 65. For example, the currentsensor circuit 75 (illustrated in FIG. 14) detects changes in thecurrent from the AC-FUSE-S signal from the backplane circuitry andprovides inputs to the microcontroller 66 a so that the microcontroller66 a in the expansion module 65 can determine if there is a shortcircuit or over current condition. Again, since this determinationoccurs within the expansion module, irrigation may be immediatelystopped in the event of a short circuit or over current conditionwithout having to wait for the control panel 30 to make suchtermination.

As best seen in embodiment illustrated in FIGS. 7 and 8, the terminals58 of the base module 55 and the expansion modules 65 comprise snap-inwire terminals that are known in the art of electrical connection. Theseterminals 58 provide the necessary connection points 58 a to the valveoutputs. In preferred form, there are two connection points 58 a foreach terminal 58 on expansion modules 65 and one connection point 58 afor each terminal 58 on base module 55 with wire sizes up to 12 AWG. Foreach connection point 58 a (or pair of connection points 58 a) a wirerelease feature 58 b is provided which when pushed, allows the wires tobe released from the corresponding connection point 58 a.

Seen clearly in FIG. 4, the module mounting locations 45 a and 45 baccommodate docking and the electrical coupling of the modules 55 and 65to the backplane 45. The base module mounting location 45 a is reservedfor the base module 55 and the expansion module mounting locations 45 bare for the expansion modules 65. The backplane connectors 44 and 47include pins that carry power and data signals. In one embodiment, theseconnectors 44 are reverse polarized from contacts 47 through thephysical contact housing in order to prevent module 55 and modules 65from being interchangeable. In preferred form, the connection of thesepins from the modules 65 to the backplane 45 is designed to function inaccordance with the industry standard term “hotswappable”. In additionto this ‘hotswapping’ feature, any expansion module 65 can be installedin any receptacle, allowing maximum flexibility for the user. Thisprovided in part by the common bus structure (all expansion modulescommunicate using the same bus structure) and communication protocol aswell as that the microcontroller 32 is configured to not expect modules65 to be inserted in any particular mounting location or order. This isin contrast to known modular controllers in which the data linestructure through the modules requires that modules be inserted in aspecific order. Additionally, this is further allowed in that the mainmicrocontroller 32 is configured to expect that a new module can appearand disappear at any time. For example, the main microcontrollerautomatically receives an announce message when a new module appears andconstantly checks to verify that attached modules remain attached.Furthermore, the communication protocol can be asynchronous so that themain microcontroller 32 and the modules 65 can asynchronouslycommunicate. As a result, several embodiments of the invention allow theuser to remove or install modules without the need to power down andrestart the controller 10. This feature is novel in the irrigationindustry as other modular irrigation controllers must first have theirpower removed before any module can be removed or inserted. Toaccomplish “hotswapping”, the contacts in the connector 47 are arrangedin a manner whereby the power signals establish a circuit connection ateither end of the row of contact pins in FIG. 21 (e.g., AC-COM andAC-FUSE are located at either end of the pin configuration) at the sametime or before the connection of the data lines (e.g., SMB-DO andSMB-DI) in the center of the connector 47, which are contacted into themating connector 57 of module 65. This is done to prevent the possiblenon-orthogonal insertion of the modules from damaging module circuitry.In this manner, the module's microcontroller power will have contactedbefore any voltage appears on the data lines. This “hotswapping” featurealso allows the module to detect and indicate to the user that themodule is not fully engaged mechanically. This condition could be causedby the user not fully applying pressure to the module to engage latchmechanism 59 c, or by some other reason which prevented the module fromfully engaging. The module, having gotten power from one set of pins ateither end of the contacts 47, would be able to detect if the data pinsin the center of receptacle were fully engaged and able to communicatewith control panel 30. In the case where pin engagement was not made,the module 65 would communicate the problem through the use of thestatus indicator 56 a, (e.g., an LED) so that the user could then reseatthe module 65 to provide for full insertion.

The prior art irrigation controllers have certain disadvantages inregards to the placement of the modules. One such controller by acompetitor requires modules to be installed in a specific order. Incontrast, modular controllers in accordance with several embodiments ofthe invention eliminate the need to move an existing module, renumberirrigation zones or disconnect and reconnect valve wires when adding amodule to the irrigation controller 10. It is a further object ofseveral embodiments of the invention to allow expansion modules 65 ofany output station size capacity to be placed on any receptacle 45 b inany order. This is allowed in many embodiments because the modules 65report their station output capability to the main microcontroller 32,which is configured to accept any number of station outputs, includingdecoder station outputs. The microcontroller 32 is also configured notto be confused if there is a gap in sequential modules as installed.

A latching mechanism between the modules 55 or 65 and the backplanecover 43 facilitates the secure, firm and reliable connection of modules55 or 65 to the backplane circuitry 46. The module 55 or 65 is placedperpendicularly onto the module mounting location 45 a or 45 b, seen inFIG. 4, on the backplane cover 43. To install the module, the fourguideposts 59 a in the form of tapered posts on the bottom of the module55 or 65 are matched into the guide holes 59 b located on the backplanecover 43 and the module is pressed into the module mounting location 45a/45 b (FIG. 4). The mating guideposts 59 a provide alignment to preventimproper insertion of the modules 55 or 65 as well as provide initialalignment for the interconnect between the module 55 or 65 and thebackplane circuitry 46 and also allows for “flat on table” storage ofmodules, preventing damage to the connectors 44 and 47. Releasing themodule latching buttons 59 accessible through an opening in the side ofthe module allows the button latch mechanism 59 c (also referred to as alatch having a ledge formed at one end) to expand underneath thebackplane cover 43 through the holes 59 d causing the module 55 or 65 tobe held firmly in place. A “snap” or “click” sound is heard from themodule latching buttons 59 when the module 55/65 is fully installed. Themodule 55 or 65 is released by pressing the two module latching buttons59 on opposing sides of the module 55 or 65 and pulling the moduleperpendicularly away from the backplane cover 43.

Each module 55 and 65 has a status indicator 56 a, e.g., a lightemitting diode (LED), that illuminates to indicate correct installationof the module 55 or 65, or that the module 55 or 65 is active duringvalve or other operation. In some embodiments, the status indicator 56 ais a sound emitting device.

To facilitate power consumption reduction, the microcontroller inmodules 65 can go to sleep and be awakened by a command or signal fromthe control panel microcontroller 32. In some embodiments, thecontroller 10 also incorporates a power supply feature that enhances thecomponent reliability while providing higher power output through a newmethod based on a modified form of pass regulator topology. The passregulator transistor, instead of always being on, is switched to on andoff modes using available line frequency. The advantage yielded withthis approach is the increased system efficiency at no additional cost.

The backplane circuitry 46 holds the remote connector 63 and the groundterminal blocks 60 b, the power terminals blocks 60 a, base moduleconnector 44 for the base module mounting location 45 a and theconnectors 47 for four additional expansion module mounting locationsfor expansion modules 65. In the illustrated embodiment, no stationoutputs are found on the backplane circuitry 46, although it isunderstood that in some embodiments, station outputs may be implementedin the backplane circuitry 46.

In one embodiment, the remote connector 63, indicated in FIG. 4,provides the means to connect a wireless receiver to the irrigationcontroller 10. A person equipped with the wireless control has now themeans to manually activate irrigation valves, modify the irrigationschedule or the behavior of any additional tasks that the irrigationcontroller 10 is capable of performing. The remote connection portsfound on prior art irrigation controllers are typically placed on theback of the front panel. This type of installation requires cumbersomewiring and wire routing, often times causing the tangling of wiresbehind the front panel hinge, making the unit difficult to close. Thepreferred embodiment keeps the remote connection port 63 and the wire(not shown) on the backplane 45 contained within the rear housing 40only, eliminating any complicated wiring and wire routing.

The prior art irrigation controllers have invented ad hoc or proprietarybus methodologies to solve communication problems. However, the softwareand firmware used for communications in such prior controllers is oftennot extensively tested, documented, or reliable, and is often inflexiblethus offering few expandability options. Modular controllers inaccordance with several embodiments of the invention incorporate, in aunique manner, the time-proven robust Transmission ControlProtocol/Internet Protocol (TCP/IP) computer communication protocol foruse on the controller's internal communication bus 39. The use of such apowerful protocol in a modular irrigation controller has never beenundertaken in the industry. This preferred method, using TCP/IP, allowsfor superior flexibility for internal communications between the mainmicrocontroller 32 and other microcontrollers 66 a located in theirrigation controller 10. It also offers easier and greatercommunication with external control networks and larger networks. Asillustrated in FIG. 27, a Socket Application Programming Interfaceallows the main program of the main microcontroller 32, which operatesthe irrigation controller, to pass data from the main microprocessor 32to expansion modules 65 via a User Datagram Protocol (UDP). The physicallayer of this TCP/IP-driven communication protocol is a 9-bit serialport and takes advantage of the Serial Line Internet Protocol (SLIP).While the preferred embodiment utilizes the aforementioned physicallayer means, the networking software is not hardware specific and can beadapted to many other physical layer methods such as RS232, RS485, or aparallel bus to move data.

One embodiment incorporates a very compact and efficient TCP/IP protocolstack so that it may fit in the small memory space of the module'smicrocontroller 66 a thus keeping the cost of the module'smicrocontroller 66 a as low as possible to create a cost-effectiveproduct. Traditionally, the use of a TCP/IP protocol would not beconsidered viable in a product of this nature. To keep the memoryrequirements as low as possible, the invention utilizes the UDP flavorof the TCP/IP protocol. The use of TCP/IP protocols within the modularcontroller allows utilizing the powerful addressing and routing featuresinherent in the TCP/IP protocol. The control panel 30 and each expansionmodule 65 are treated as separate internal network devices, each with auniquely assigned IP address (Internet Protocol address).

To communicate within a larger network of a centralized system, thisembodiment has an external communication interface 34 a. In preferredform, this communication interface also uses a TCP/IP protocol tocommunicate with the main microprocessor 32. Thus, the controller 10 hasthe ability to be connected to an external network and assigned a uniqueIP address (dynamic or static) and be fully controlled over the Internetor other network. By using the TCP/IP protocol, each expansion module 65(including input modules 65 a, smart expansion modules 65 a, 65 b, 65 c,65 d, 65 e, 65 f) can communicate with either the main microprocessor 32or an external computer located on a private or public network. Inreturn, the external computer can interact directly with every expansionmodule 65 as the main microprocessor 32 will act as a TCP/IP routerdirecting the data to the correct module. In the preferred embodiment,the external communication interface 34 a incorporates a phone linemodem using Point-to-Point Protocol (PPP). It will be obvious to thoseskilled in the art, that the communication interface could alternatelybe an Ethernet interface, wireless interface, etc. Optionally, Internetemail may be used to send messages back to the main microcontroller. Inaddition, a Hypertext Markup Language (HTML) web server can beoptionally installed to make communications easier. This way, theirrigation controller can be updated with the latest input data, such asweather and environmental conditions, by email or by direct sending ofUDP packets to the controller.

The following description provides more details regarding many of thepinout configurations of various electrical components of the modularcontroller 10 in accordance with several embodiments of the invention.Each pinout configuration comprises a plurality of pins of an electricalconnector interface designed to couple to a corresponding interfacehaving the same pin assignments. In one embodiment, the pinoutassignments for the ribbon cable 49 interface between the control panel30 and the backplane circuitry 36 as illustrated in FIG. 12 is asfollows:

NOT CONNECTED there is no electrical connection to this pin ENUM-FREQ afrequency timing signal used by the enumeration process in the expansionmodules to determine in which mounting location the expansion module islocated 12V-UNREG-RTN current return connection for 12 volt unregulatedpower source for the remote control 12V-UNREG-RTN current returnconnection for 12 volt unregulated power source for the remote controlREMOTE-DO data output signal for remote control MVn output for primarymaster valve solenoid BM-LEDn-OUT base module LED driver signalBM-STATUS installed status indicator for base module NOT CONNECTED thereis no electrical connection to this pin AC-FUSE 24 vac power source,fuse protected AC-FUSE-S 24 vac power source with current sensing AC-COM24 vac power common line NOT CONNECTED there is no electrical connectionto this pin SMB-DO data output for serial module bus SMB-DI data inputfor serial module bus REMOTE-DI data input signal for remote controlI-SENSE-OUT current sensing signal MV2n output for secondary mastervalve solenoid SENSOR-FTR filtered input for external sensor #1SENSOR2-FTR filtered input for external sensor #2 NOT CONNECTED there isno electrical connection to this pin AC-FUSE 24 vac power source, fuseprotected NOT CONNECTED there is no electrical connection to this pinAC-COM 24 vac power common line

In one embodiment, the pinout assignments 69 for the base moduleconnector interface between the connector 57 of the base module 55 andthe connector 44 of the backplane circuitry 36 as illustrated in FIG. 20is as follows:

MVn output for primary master valve solenoid BM-LEDn base module LEDdriver signal BM-STATUS installed status indicator for base moduleAC-FUSE 24 vac power source, fuse protected AC-COM 24 vac power commonline MV2n output for secondary master valve solenoid SENSOR-FTR filteredinput for external sensor #1 SENSOR2-FTR filtered input for externalsensor #2 AC-FUSE-S 24 vac power source with current sensing AC-COM 24vac power common line

In one embodiment, the pinout assignments 78 for the expansion moduleconnector interface between the connector 57 of the expansion module 65and the connector 47 of the backplane circuitry 36 as illustrated inFIG. 21 is as follows:

AC-COM 24 vac power common line ENUM-FREQ a frequency timing signal usedby the enumeration process in the expansion module to determine in whichmounting location the expansion module is located AC-FUSE-S 24 vac powersource with current sensing SMB-DI data input for serial module busAC-FUSE 24 vac power source, fuse protected AC-FUSE 24 vac power source,fuse protected (alternatively, (alternatively, current sensing signal)I-SENSE-OUT) SMB-DO data output for serial module bus AC-FUSE-S 24 vacpower source with current sensing ENUM-RC a resistor connection from thebackplane used by the enumeration process in the expansion module todetermine in which mounting location the expansion module is locatedAC-COM 24 vac power common line

In one embodiment, the pinout assignments for the external expansionport 62 connector interface to an expansion housing 80 as illustrated inFIG. 22 is as follows:

ENUM-FREQ a frequency timing signal used by the enumeration process inthe expansion module to determine in which mounting location theexpansion module is located SMB-DO data output for serial module busSMB-DI data input for serial module bus I-SENSE-OUT current sensingsignal AC-FUSE 24 vac power source, fuse protected AC-FUSE 24 vac powersource, fuse protected AC-FUSE-S 24 vac power source with currentsensing AC-FUSE-S 24 vac power source with current sensing AC-COM 24 vacpower common line AC-COM 24 vac power common line

In one embodiment, the pinout assignments for the interface to the LCD24 of the user interface 21 as illustrated in FIG. 25 is as follows:

V5 voltage #5 for the LCD display V4 voltage #4 for the LCD display V3voltage #3 for the LCD display V2 voltage #2 for the LCD display V1voltage #1 for the LCD display C2− external capacitor connection C2+external capacitor connection C1+ external capacitor connection C1−external capacitor connection C3+ external capacitor connection VOUTvoltage for the LCD display VSS power source for the LCD display VDDpower common for the LCD display D7 data bit 7 - most significant bit D6data bit 6 D5 data bit 5 D4 data bit 4 D3 data bit 3 D2 data bit 2 D1data bit 1 D0 data bit 0 - least significant bit RDn read strobe signalWRn write strobe signal A0 low order address signal RESn display resetsignal CS1n chip select, enable signal VSS power source for the LCDdisplay VDD power common for the LCD display

In one embodiment, the pinout assignments for the communicationsinterface port 34 a as illustrated in FIG. 26 is as follows:

 1 - there is no electrical connection to this pin  2 - RESET resetsignal to the main processor  3 - RxD communication interface serialdata input signal  4 - there is no electrical connection to this pin 5 - GND circuit common for data, clock, and reset signals  6 - AC- FUSE24 vac power source, fuse protected  7 - TxD communication interfaceserial data output signal  8 - there is no electrical connection to thispin  9 - ISP-CLK-IN timing clock for programming of processor flashmemory 10 - AC-COM 24 vac power common line

Next, while referring to FIGS. 52-69, a modular controller in accordancewith several other embodiments of the invention, generally designated at210, is illustrated in FIG. 52. As shown, the expandable architecturemodular irrigation controller 210 of this embodiment is installed in awater-resistant controller housing or cabinet 212 having a generallybox-shaped appearance with a front cover door 216 and a rear maincabinet portion 214, the front cover door being attached to the rearcabinet portion by a hinge 262 that permits the front cover door to beopened for access to the inside of the rear cabinet, as best seen inFIG. 53. When the unit is installed on site, typically on a wall or thelike through a key hole mount 213, power wires 218 and valve controlwires (not shown here) run though wiring access holes 217 in the bottomof the controller housing 212, as seen in FIG. 54. The new and improvedirrigation controller 210 having an expandable architecture modulardesign allows for easy and economical expansion of the controllercapabilities not found in other controllers.

The controller housing 212, preferably formed of plastic or othersuitable material, is designed to withstand various environmentalconditions, and houses a base unit 224, a base module 221, expansionmodules 222 and smart modules 226 (also referred to as smart expansionmodules). To releasably retain the cabinet door 16 in the closedposition, the door edge opposite the hinge 262 includes a laterallyinwardly projecting lip 266 that releasably mates with an opening 270formed in a tab 268 projecting forwardly from the front edge of the rearcabinet portion 214. Upon release of the lip 266 from the opening 270,the cabinet door 216 pivotally swings open about the hinge 262 to reveala removable and programmable control panel 220 that includes a userinterface to enter and maintain an irrigation schedule. The cabinet door216 contains a window 272 to which is mounted a light pipe 247. Thelight pipe 247 is positioned on the cabinet door 216 to provide directviewing of a light emitting diode (led) alarm indicator 246 when thecabinet door 216 is closed.

The base unit 224 carries out basic irrigation functions and alsoperforms other advanced functions, and comprises the control panel 220that is removably attached to the front of the rear cabinet portion 214,and a back plane circuit board 251 (see FIGS. 54 and 56) permanentlyhoused in the rear cabinet portion and having circuitry for connectionto the base module 221, expansion modules 222 and smart modules 226. Thecontrol panel 220 is pivotally coupled to the rear cabinet 214 andswings open to provide access to the interior within which variouselectronic components, including the backplane circuit board 251 arelocated. Terminal blocks on the back plane circuit board 251, designated231 a-231 e in FIG. 57, provide an interface to the power supply line218, an earth ground line and various sensor input lines (not shownhere).

It is an object of one embodiment of the present invention to have aneasy and intuitive user interface to enter and modify a plurality ofirrigation schedules for an irrigation system. As seen in FIG. 53, thefront surface of the control panel 220 includes various operationalcontrols and indicators 229 that assist a user in interfacing with andprogramming the controller and the irrigation system. In this instance,a liquid crystal display (LCD) 236 provides a visual output ofinformation to the user such as when operating the programmingfunctions, among other tasks. An LED Alarm Indicator 246 seen in FIG. 53illuminates when a faulty condition is detected, for example, at astation output in a standard expansion module 222, or a programmingerror in the control panel microcontroller 220 c. Illumination of theLCD is visible through the window 272 in the cabinet door 216 when it isclosed.

With reference to FIGS. 62 and 69, the control panel 220 has circuitry220 b (shown in FIG. 69) that includes a control panel microcontroller220 c that communicates with the backplane circuitry 251 to activate theirrigation functions as defined in an irrigation program as well asother functions as may be contained in the smart modules 226. Themicrocontroller 220 c sends commands via the back plane circuitry 251 tothe base module 221 and/or the expansion modules 222 to activateirrigation valves according to a pre-programmed schedule or via amanually initiated irrigation cycle. In the presently preferredembodiment, the microcontroller 220 c of the control panel circuitry 220b employs a TMP87CM20F microcontroller manufactured by Toshiba, and ispowered by a 5 VDC power supply. A non-volatile memory backup (EEPROM)44 maintains the watering schedule upon line power outages.

As best seen in FIG. 68, the back plane circuitry 251 herein includes 13active input stations (station 12 is not active) that communicate withthe microcontroller 220 c of the control panel 220. In this instance,the stations include four station inputs for actuating valves, a mastervalve station, a rain sensor station, a ground line station, fourcommunications stations, an AC-com station, and an AC-fuse station. Theinformation conveyed from the control panel 220 to the back planecircuitry 251 is then distributed to individual output bays 219 (seeFIG. 56) into which one or more irrigation function control modules 221,222, and 226 have been inserted. As shown in FIG. 68, the base planecircuitry 251 includes an output connection, “module 0”, thatcommunicates information to the base module 221; two output connections,“module 1” and “module 2”, for bays 219 that can receive expansionmodules 222; and an output connection for a smart module 226, “module3.” As will become more apparent hereinafter, not only can an expansionmodule 222 be used in place of a smart module 226 in the stationdesignated “module 3,” but expansion modules can be used in any of thebays 219, with the sole exception of “module 0” which is reserved forthe base module 221.

The control panel 220 can be removed from the controller 210, as seen inFIG. 55, for remote stand-alone programming by the user. In thisconnection, the control panel 220 is pivotally attached to the frontedge of the rear housing portion 214 through a pair of hinge pins 232that are releasably received in holes 274 formed in tabs 276 projectingforwardly from the rear housing portion. The tabs 276 are sufficientlyflexible to permit the pins to be released for removal of the controlpanel 220, but are sufficiently rigid to retain and support the controlpanel on the rear housing.

A detachable ribbon cable 228 removably connects the control panel 220to the backplane circuitry 251 so as to permit the control panel 220 tobe completely removed from the base unit 224. To provide power so thatthe control panel 220 can be removed and programmed independent of anoutside power source, a battery (not shown) is provided in a recess 234in the control panel 220. This further provides additional flexibilityin that, for example, a damaged control panel can quickly be changed andreplaced with a new control panel without the need to replace the entirebase unit 224. This feature also lets the user enter program informationbefore installing the controller at a job site. In this instance, thebattery is retained by a cantilever-type spring biasing element 235 thatfrictionally presses against the side of the battery to hold it inposition. The battery is easily removed via a finger access hole 235 blocated in the spring biasing element 235 which allows the user tosimply insert a finger, pull up on the spring element slightly torelease the frictional contact, and remove the battery from the recess234 shown in FIG. 55. The spring biasing element 235 allows the batteryto be retained and/or replaced without the use of any tools, such asscrews, and retains the battery without additional parts, such as alatch or a swinging door. This results in less cost for manufacturingdue to lack of additional parts (screws, doors, etc.), this also resultsin an easy, single-handed removal and insertion of the battery.

A reset button 225 is located at the back of the control panel 220 asseen in FIG. 56. The reset button 225 serves to restart the controlpanel microcontroller 220 c from a potential lock-up condition possiblycaused by electrical disturbances. A “remote” connector 239, alsoindicated in FIG. 56, provides the means to connect a wireless receiverto the irrigation controller 210, and a wire retention channel 239 b isprovided to direct and restrain the remote connection cables (notshown). An authorized person equipped with the wireless control now hasthe means to manually activate irrigation valves, modify the irrigationschedule or the behavior of any additional tasks the irrigationcontroller is capable of performing.

The base unit 224 relies on the insertion of the base module 221 to becapable of activating any irrigation stations. The base unit 224 doesnot have sufficient capability by itself to control an irrigationstation, as there are no driver or output switches for irrigationstations within the base unit 224. Instead, drivers and switching meansare located in the base module 221 and the expansion modules 222. It isan object of several embodiments of the present invention to achieveflexibility and cost savings. For example, a damaged component such as amicrocontroller or station switch in a prior art base unit would requirethat the entire base unit be replaced. In one embodiment, a damagedcomponent in the base module 221, the expansion module 222 or the smartmodule 226 requires only that the damaged module be swapped out andreplaced on-site by a new module in much less time than is needed toinstall a new base unit and at significant cost savings. The expandablearchitecture allows the user to choose from a variety of expansionmodules 222 that can include standard irrigation modules for carryingout watering schedules or smart modules 226 for carrying out additionalfunctions.

Moreover, as shown in FIGS. 58-61, each module 221, 222, and 226 isrelatively simple in construction and incorporates similar basiccomponents. As seen in FIG. 61 which depicts the structure of anexpansion module 222, but which is also representative of the structuresof each of the base and smart modules 221 and 226, the module includes ahousing 280 comprising a lower portion 282 and an upper portion 284which mate together to encase and protect the module circuit board 286,and herein are held together by a screw 288. Rotatably attached to thetop of the upper module housing 284 is a rotary locking lever 252 thatfunction to securely hold and retain the module in position wheninstalled into the controller 210. The locking lever 252 has adownwardly projecting pin 281 that is snap fit through a cylindricalsleeve 283 formed in the upper module housing 284 to pivotally attachthe locking lever to the upper module housing, and includes an upwardlyprojecting locking tab 285 that functions to lock the module in itsoperative position. As best seen from the expansion modules 222 and thesmart module 226 in FIG. 56, when the locking lever 252 is in one rotaryposition, herein the left rotary position, the locking lever is“unlocked” while when the lever is in the counterclockwise rotaryposition to the right such as shown for the base module 221, the leveris in the “locked” position as shown in FIG. 56A in detail. Tofrictionally retain the locking lever 252 in the “locked” and “unlocked”rotary positions, the underside of the locking lever has a smalldownwardly projecting nipple (not shown) that snap fits intocorresponding recesses or dimples 287 in the upper module housing 284.

As shown in FIG. 57, module insertion paths 237A-237D lead to individualbays 219 that accommodate docking and electrically coupling of theexpansion modules 222 and smart module 226 with the back plane circuitboard 251. In this instance, path 237A is reserved for the base module221 and paths 237B and 237C are for expansion modules 222 and path 237Dis for either another expansion module, or the smart module 226. Each ofthe modules, 221, 222, and 226 electrically couples and interconnectswith the backplane circuitry 251 via sets of conventional spring fingercontacts 245 indicated in FIGS. 59 and 61 that electrically couple withcomplementary sets of conventional electrical contact pins 245A of thebackplane circuitry 51 (see FIG. 56). Each module also includes outputterminals 223, 227, and 226, herein in the form of conductive screws, towhich output wires to irrigation components such as valves and solenoidscan be attached in a conventional manner.

In this connection, the electrical contact pins 245A of the back planecircuitry 251 are grouped in sets corresponding to the location of eachbay 219 into which a module can be positioned. Herein, as seen in FIGS.56 and 57, the electrical contact pin sets 245A for each bay 219 arecarried on generally rectangular shaped tongues 251A formed as part ofthe back plain circuit board 251, and slide into complementary slots245B (see FIG. 56A) in the front end of the housing 280 to makeelectrical contact with the corresponding set of spring finger contacts245. It should be apparent that additional modules could be accommodatedby the addition of an expanded base unit 224 and its back plane 251 andnumber of bays 219. To secure and retain the Base module 221, theexpansion module(s) 222 and the smart module(s) 226 to the base unit224, and to releasably retain the modules in position, the moduleinsertion paths 237A-237D are partially covered by the backplane cover250 as seen in FIG. 57, such that the modules can be slid into themodule insertion paths 237A-237D and into the bays 219 to be coupled tothe backplane circuit board 251, as best shown in FIG. 56.

To properly position and guide the modules 221, 222, and 226 into thebays 219, each module includes longitudinal recesses (not shown) formedalong the bottom of the lower module housing 282 that can mate withupstanding guide rails 230 formed on the bottom wall of the rear cabinetportion as seen in FIG. 57. Once the module is inserted into the bay219, the user indexes the locking lever 252 from the unlocked to thelocked position. In this instance, as best seen in FIG. 56A, thebackplane cover 250 has a downwardly projecting wall 250A extendingalong the length of the forward edge, and which has openings 290corresponding to the locations of the insertion paths 237A-237D, andthrough which the locking tabs 285 of the modules can move when themodule locking lever 252 is in the “unlocked” position. When a module isfully inserted into one of the insertion paths 237A-237D, the lockinglever 252 is then rotated counterclockwise which causes the locking tab285 to move out of alignment with the opening 290 and into abuttingengagement with the rear side of the wall 250A adjacent the opening.With the tab 285 abutting the wall 250A, the module is securely lockedin position, and cannot be pulled out of the controller unless thelocking lever 252 is first rotated to align the locking tab with theopening 290.

The base module 221 is responsible for the carrying out basic irrigationfunctions, such as turning on or off irrigation system valves (not shownhere) which control the flow of water to the irrigation stations for thepreset programmed duration. The presently preferred circuitry for thebase module 221 is illustrated in FIG. 63. As can be seen, the basemodule circuit 221 includes a bus interface having input connectionsfrom the back plane circuit board 251 for controlling a master valve andfour individual station valves, and incorporates surge protectioncircuitry for lightning protection. Valve test circuitry is alsoprovided to allow the user to assess the condition of the system. Asbest seen in FIG. 58, the base module 221 includes a number ofconductive screws that serve as output terminals 223 for connecting themodule to irrigation station valves. Herein, the base module 221includes a plurality of station output terminals 223D-223G (preferablyfour station output terminals), a ‘hot post’ terminal 223A (VT) to testthe valves during installation, a terminal 223B for a master valve (MV)and a terminal 223C for a common wire terminal (COM).

The expansion modules 222, which are generally identical to each other,enable a user to quickly and easily expand the capabilities of thecontroller 210 functions without requiring the purchase of a new baseunit 224. Each of the expansion modules 222 includes three stationoutput terminals 227, herein in the form of conductive screws, as seenin FIG. 59, to which output wires to irrigation components such asvalves and solenoids can be attached.

Each expansion module 222 includes a microcontroller 222 b (see FIG. 64)capable of communicating with the microcontroller 220 c of the base unit224. By using a micro-controller in the expansion module 222, the numberof connections required is reduced, as well as space and cost. Asillustrated in the circuit diagram of FIG. 64, the microcontroller 222 bis capable of communicating with the control panel microcontroller 220 cand controls the drivers and switches for the output stations. In thepresently preferred embodiment, the microcontroller 222 b employed inthe expansion module is an Atmel AT-TINY12L-4 microcontroller thatprovides communication to the base unit 224, thereby substantiallyreducing the number of connections between the module and the base unit224 while at the same time handling the ‘drivers’ to the outputstations. The basic irrigation controller 210 in accordance with oneembodiment of the invention has no irrigation stations, but separatemodules can be added later for a determined location, and to providepossible upgrade for a future improvement to the initial installation.

The microcontroller 222 b in the expansion module 222 and themicrocontroller 220 c in the base unit 224 are mutually dependent uponeach other in order to operate. The communication between the controlpanel microcontroller 220 c and the expansion modules 222 takes placethrough an asynchronous serial communication line, namely, COMMX. Duringthe communication, data bits are transmitted in 100 microsecondintervals. In order to obtain a consistent time reference for datareception, bit marks are set at 100 microseconds. Due to the fact thatthe control panel microcontroller 220 c and the modules 221 and 222 arerunning asynchronously, each running on a separate clock, a bit jitterof 8.4 microseconds, worst-case, could be realized. To guarantee the bitjitter not exceeding 8.4 microseconds, it is necessary that the controlpanel microcontroller 220 c disables any interrupts associated with anyother interrupt functions, such as key actuation by a user, and onlyservice the communication task at hand. Other functions and operationsshould not be affected adversely since the communication sequence lastsonly for approximately half a millisecond per module.

Preferably, the communication protocol consists of a negative start bit,3 data bits, and an active low acknowledge. The recognition of the startbit by the module prompts the module to read the station status bitsnear the center of each 100 us bit mark. Upon completion of the statusbits by the control panel microcontroller 220 c, the control panelmicrocontroller releases the serial communication line and allows themodule to acknowledge data reception by pulling down the serialcommunication line.

The microcontroller 222 b in the expansion module 222 looks at thereceived data which contains information about which irrigation stationsattached to this module should be activated or deactivated. In preferredform, the microcontroller 222 b receives three consecutive messages withidentical information before it actually makes a change to theirrigation station outputs. This provides a robust communicationimplementation whereby the irrigation stations do not erratically turnon or off under noisy data conditions.

The control panel microcontroller 220 c sends irrigation station data toevery expansion module 222 through the backplane circuitry 251 on a onesecond interval, thereby insuring that each microcontroller 222 b ineach expansion module 222 is refreshed with irrigation station dataevery one second. The microcontroller 222 b in the expansion module 222also includes a timeout mechanism. A timer inside the microcontroller222 b and an interrupt service routine in the microcontroller firmwareis used to create a repetitive internal clock tick every few hundredmicroseconds, which in turn, increments a counter to keep track ofseconds. This clock tick and counter is used to measure the intervaltime gap since the last valid communication packet received by themodule microcontroller 222 b from the control panel microcontroller 220c. If this time interval gap exceeds five seconds, the microcontroller222 b in the expansion module decides that a fatal communication failurehas occurred and the microcontroller 222 b deactivates all irrigationstation outputs connected to itself.

Each time that the control panel microcontroller 220 c sends irrigationstation data to an expansion module 222, the microcontroller 222 b inthe expansion module 222 will respond with an acknowledge bit. Thisacknowledge bit is transmitted by the microcontroller 222 b immediatelyafter the receipt of the station status bits in the serialcommunication. If the control panel microcontroller 220 c does notreceive an acknowledge bit, this is an indication that a module is notinstalled in that specific path 237A-237D of the bay 219. Aftercommunicating with each connector in the bay 219, the control panelmicrocontroller 220 c will know which paths have modules installed andwhich do not. The firmware of the control panel microcontroller 220 cwill correlate this information to determine which irrigation stationsare effectively available to the irrigation program. If a user attemptsto program an irrigation station that is not present, the firmware willalert the user by displaying a message such as “No Module”.

The spring finger contacts 245 of the expansion modules 222 mate withcomplementary contact pin sets 245 a formed in the backplane circuitry251, for example as is shown in FIG. 59. The backplane contact pins 245a carry power and data signals, and are arranged as sets in a mannerwhereby the power signals establish a circuit connection prior to thedata lines when the module is inserted into the bay. In this manner, themodule's microcontroller power will have stabilized before any voltageappears on the data lines. Stabilizing the power of the module'smicrocontroller before voltage is applied to the data lines prevents themicrocontroller in the module from latching up or overloading itscurrent ratings on its input/output pins. This allows the module to beremoved from and inserted into the bay 219 without the need to firstremove power from the remainder of the controller 210. Many embodimentsof the modular controller 210 are novel in the industry as other modularirrigation controllers using microprocessors in their modules must firsthave their power removed before any modules can be removed or inserted.In addition, the firmware in the control panel microcontroller 220 c isable to handle the dynamic appearance and disappearance of irrigationstations without the need to restart or reboot the firmware. This ismade possible by having the firmware continuously verify if a modulethat corresponds to each irrigation station is installed. For stationsthat are detected as being not available, the firmware prohibits theuser from enabling that station. In addition, it alerts the user thatthe station is unavailable by displaying a message such as “No Module”.

As shown in FIGS. 64 and 66, the set of spring finger contacts 245 forcoupling the expansion modules 222 to the corresponding set of connectorpins 245A of the back plane 251 herein include two AC power lineconnections, an earth ground line connection, and a data communicationsignal line connection. The corresponding pin-out of the back planecircuit 251 is illustrated in FIGS. 66 and 68 and the correspondingsignals are as follows: 1—EARTH GROUND, 2—AC COM, 3—AC HOT, and 4—COMM-1(or 2 or 3 depending on which bay 19 the module is positioned in andindicated in FIG. 64 as “COMM X”).

The communication between the control panel microcontroller 220 c andeach of the expansion modules 222 and the smart modules 226 takes placethrough a serial communication line so that the particular moduleinsertion path 237A-237D into which an expansion or smart module isinserted makes no difference. Thus, if an expansion module in insertionpath 237B malfunctions and needs to be replaced, the removal of thatmodule will have no effect on the operation of the remaining modules ininsertion paths 237C and/or 237D.

If the control panel circuit 220 b, illustrated in FIG. 69, detects thepresence of one or more expansion modules 222, the control panelmicrocontroller 220 c assigns a default identity to each module andqueries the module to identify its functionality. Once in communication,the expansion modules 222 work in concert with the control panelmicrocontroller 220 c to carry out the programmed functions. Forexample, the expansion modules 222 can inform the base unit 224 ofvarious conditions, such as temperature, humidity, rain gauge readings,moisture of the ground, etc. the base unit 224 also contains the basicirrigation schedules and is programmed to adjust irrigation schedulesbased on data received from the expansion modules 222. Although theexpansion modules 222 enable the base unit 224 to change to permitadvanced functions such as adjusting for weather conditions, neither theexpansion modules 222 nor the base Unit 224 can adjust or changethemselves.

Various smart modules 226 may be used to perform a variety of functionsthat expand the capabilities of the irrigation controller 210 beyond itsbasic irrigation functions. In this instance the smart module circuitshown in FIG. 65 includes a microcontroller 222 c that is of the sametype as that employed in the expansion modules 222. This and other typesof microcontrollers can be employed in the smart modules 222, and whichcould be used, for example, to perform such functions as being alatching solenoid module sending a DC pulse along a wire to a solenoid,a wireless module sending a signal to a valve, a decoder moduleinterpreting a command from the controller 210 that indicates when avalve should turn on/off, an input module accepting inputs from sensorsand providing information to the controller 210 about environmentalcondition, weather, etc., a feature module containing an extra featuresuch as cycle and soak, etc., an alarming module communicating faultconditions to a homeowner, an alarm company or alike, a fertigationmodule connecting an automatic fertilization system and allowing theirrigation controller 210 to automate fertilization, anevapotranspiration module receiving evapotranspiration data or weatherconditions and allowing the controller 210 to adjust irrigationaccordingly, a communication module connecting the controller 210 toother communication channels and/or networks including the internet,etc.

Like the expansion modules 222, the smart modules 226 have a set ofconventional spring finger contacts 245 that mate with a correspondingset of conventional connector pins 245A of the backplane circuitry 251.In this instance, as best seen in FIGS. 65 and 67, each smart module 226includes an earth ground connection, two AC power line connections, andtwo data communication signal connections. As shown in FIGS. 67 and 68,the complementary set of connector pins 245A of the back plane circuit251 for the smart module 226 (referred to as “Module 3” in FIG. 68) havepin-outs for the corresponding signals are as follows: 1—EARTH GROUND,2—AC COM, 3—AC HOT, 4—COMM-X, and 5—COMM-4

The smart modules 226 use a dedicated line, herein designated COMM4, tocommunicate their presence and identity to the control panelmicrocontroller 220 c. This COMM4 connection is provided in theright-most slot 230D of the base unit 224, so that a module insertedtherein has access to this additional communication signal. Smartmodules 226 can also utilize the asynchronous serial communication line,COMMX, in a similar manner to the expansion modules 222. In addition, ifa Smart module 226 requires extended two-way communications with thebase unit 224, it can achieve that through a software-basedcommunications protocol programmed into the microprocessor of the smartmodule 226 and that of the base unit 224. Moreover, if desired, thebackplane circuit board 251 can be modified to include additional bays219 for receiving additional smart modules 226 simply by adding bayswith a COMM-4 communication line for two-way communication with thecontrol panel microcontroller 220 c and/or by adding COMM-4 lines to oneor more of the bays 219 in which expansion modules 222 are mounted.

Notably, the expandable architecture modular design allows thecommunication between the smart modules 226 and the base unit 224 suchthat all smart functions are carried out in the smart modules 226 ratherthan the base unit 224. The smart modules 226, herein having circuitryas shown in FIG. 65, allow the abilities of the base unit 224 to beupgraded to include new and different functions without requiring thereplacement of the base unit 224. For example, the smart modules 226provide flexibility by allowing the base unit 224 to interface with anoutside user, such as a home security company, to alert the outside userif a sprinkler is not working. The smart modules 226 may be programmedso as to provide an alert that there is a bad solenoid because a valvedid not activate. In the case of automatic fertilization, the smartmodules 226 could interface with a, homeowner, gardener, etc. to providean update on conditions.

To guard against the failure of the control panel microcontroller 220 c,a mechanism is in place that allows both the expansion modules 222 andthe smart modules 226 to be aware of such failures. The control panelmicrocontroller 220 c communicates with the modules on a frequent basis.This allows a module to detect the loss of communication. In effect,this action is similar to that of a watchdog timer. While the controlpanel microcontroller 220 c is active, the expansion modules 222 executethe commands as received in real time from the control panelmicrocontroller 220 c. However, should there be a communication gapgreater than expected, the expansion modules' microcontrollers 222 binterpret this as a control panel microcontroller 220 c failure andimmediately shut down any watering activities or other functions untilthe watchdog conditions have been properly restored. For each commandsent to the expansion modules 222, the expansion modules 222 respondwith an acknowledgment. Absence of this acknowledgment informs thecontrol panel microcontroller 220 c that the module has suffered ahardware or software failure. Notably, it makes no difference into whichbay 219 an expansion module 222 is positioned, nor to which of theoutput terminals 227 irrigation station wires are connected. Themicrocontroller 220 c of the control panel 220 monitors the bays 219 forthe presence or absence of expansion modules 222, and cooperates withthe microcontrollers 222 b of the expansion modules to send controlsignals only to those irrigation stations detected. In this manner,there is no requirement that any particular bay 219 include an expansionmodule 226, thus allowing the user to add or remove modules in randomorder, even while the controller 210 is on and active.

In addition to the normal irrigation program set, labeled A, B & C andstored in non-volatile EEPROM 44, the Controller 210 also contains acontractor's default program set. This contractor's default program setis stored at a separate location in non-volatile EEPROM 44 than theactive program set. Irrigation programs for A, B & C are entered throughthe User Interface 229. A menu choice is available to store this set ofirrigation programs into the EEPROM 44 as a contractor's default programset. Thereafter, the user may make changes to the programs A, B & Cwithout concern about making irrigation program mistakes since there isa backup copy. In addition, a knowledgeable irrigation expert can entera set of programs and store them as the contractor's default programset. A menu choice is available to recall the contractor's defaultprogram set from the EEPROM 44 and replace the normal irrigation programset A, B & C. This allows the user to quickly and easily restore a knownworking irrigation schedule. Other irrigation controllers in theindustry have a set of factory defaults with fixed program settings thata user may recall, but do not have the ability to store and recall a setof irrigation programs customized for each individual site.

Generally, the contractor default program set is a program set that hasbeen modified relative to the factory default, typically by a contractorduring installation and is preferably site specific. In one embodiment,the contractor saves this customized program as a set recallable defaultprogram. Thus, if a user modifies the program that was input by thecontractor, the user has the ability to recall the contractor default ifthe user is not happy with the changes made. In a prior art controller,the user could recall only the factory default and would have tore-program the controller just to get it back to the customized statethe contractor had set up. By having the ability to recall thiscustomized contractor default program, the user can easily go back tothe customized state of the program, which was set up for theinstallation. Generically, the contractor default program may bereferred to as modified default program, which is specifically not afactory default. Additional memory space is provided to be able to storeboth the factory default and the contractor's default in addition to theactive program set.

In other embodiments, a contractor/user may set a contractor defaultprogram, save it, then make further changes to the contractor default sothat the active program is the modified contractor default program.Then, the user instructs the controller to recall the stored contractordefault program after a set period of time (days, hours, etc.). Inoperation, the controller executes the active program for a set periodof time (e.g., 30 days), then the controller automatically stops usingthe active program and reverts back to the stored contractor defaultprogram. This feature may be useful in situations where the new grass isbeing planted and this new grass has initial watering needs until thegrass takes root and becomes established in the soil. At this laterpoint in time, the watering needs of the grass will have changed. Inthis example, the contractor will modify the factory default to generatea set of programs that will match the watering needs of the grass after30 days once the grass has fully grown in. The contractor saves thisprogram set as the contractor default, then modifies these programsfurther to generate an active program that will meet the currentwatering needs of the grass and sets the expiration of the activeprogram for 30 days. After 30 days, the controller stops using theactive program and recalls the contractor default to use as the activeprogram (while continuing to save the contractor default to be recalledin the event a user modifies the active program and is not satisfiedwith the modified program). Advantageously, this embodiment allows moreflexibility in the programming of the controller and greater ease to auser, who knows that a set of programs customized to the installationmay be recalled, as opposed to being able to only recall a factorydefault which is not site specific.

While the invention herein disclosed has been described by means ofspecific embodiments, examples and applications thereof, numerousmodifications and variations could be made thereto by those skilled inthe art without departing from the scope of the invention set forth inthe claims.

What is claimed is:
 1. An irrigation controller comprising: a housing; acontrol unit within the housing, the control unit including a firstmicrocontroller configured to execute stored irrigation programs and afirst set of code of the control unit; and a removable plug-in devicethat removably mates with a portion of the irrigation controller suchthat the removable plug-in device is communicationally coupled to thefirst microcontroller, wherein the removable plug-in device comprises amemory storing a second set of code to replace at least a portion of thefirst set of code of the control unit, wherein the removable plug-indevice is configured to re-flash at least a portion of the first set ofcode allowing a copy of the second set of code to be transferred to thecontrol unit to overwrite at least the portion of the first set of codeof the control unit; wherein the first set of code of the control unitcomprises a bootloader that when implemented writes the copy of thesecond set of code over the first set of code of the control unit withthe exception of the bootloader that is not written over.
 2. Theirrigation controller of claim 1, wherein the memory allows the copy ofthe second set of code to overwrite less than all of the first set ofcode of the control unit.
 3. The irrigation controller of claim 1,wherein the removable plug-in device further comprises a secondmicrocontroller, the second microcontroller configured to communicatewith the bootloader using a first protocol to transfer the copy of thesecond set of code, and the second microcontroller further configured tocommunicate with the first microcontroller using a second communicationprotocol while the control unit implements the irrigation programs. 4.The irrigation controller of claim 1, wherein the first microcontrolleris configured to implement the transfer of the copy of the second set ofcode to the control unit when a version of the second set of code isnewer than a version of the first set of code of the control unit. 5.The irrigation controller of claim 1, wherein the memory of theremovable plug-in device further stores additional functionality codethat when implemented provides additional functionality usable by thecontrol unit; and the second set of code includes operating code thatwhen the copied second set of code is utilized by the control unitallows the control unit to utilize the additional functionality of theremovable plug-in device that could not be utilized by the control unitwithout the copy of the second set of code.
 6. The irrigation controllerof claim 1, wherein the control unit further comprises a key that isused to decrypt the copy of the second set of code.
 7. The irrigationcontroller of claim 1, wherein the copy of the second set of code istransferred and is stored overwriting the at least the portion of thefirst set of code of the control unit without user interaction.
 8. Theirrigation controller of claim 1, wherein the first microcontrollerreceives a signal from the removable plug-in device indicating thepresence of the removable plug-in device to the control unit andidentifying that the removable plug-in device contains the second set ofcode.
 9. The irrigation controller of claim 1, wherein the removableplug-in device includes code to measure fluid flow and report themeasured fluid flow to the control unit.
 10. The irrigation controllerof claim 1, wherein the first set of code comprises an operating codeand the second set of code is configured to replace at least a portionof the operating code of the control unit.
 11. The irrigation controllerof claim 10, wherein the first set of code comprises first firmware andthe second set of code comprises second firmware, wherein the secondfirmware is configured to replace at least a portion of the firstfirmware.
 12. The irrigation controller of claim 11, wherein the firstfirmware of the control unit comprises the bootloader code that whenimplemented by the control unit causes the control unit to implement there-flash to replace at least the portion of the first firmware of thecontrol unit with the second firmware.
 13. The irrigation controller ofclaim 12, wherein the bootloader code is protected and configured to beactivated even when a version of the first firmware of the control unitbecomes corrupt or is incompletely replaced, and the bootloader code isfurther configured to control a replacing of the portion of the firstfirmware of the control unit, which does not include the bootloadercode, with the second firmware.
 14. The irrigation controller of claim12, wherein the second set of code comprises an alternate bootloadercode configured to be copied to a memory within the housing andaccessible by the control unit such that the control unit is reactivatedto access the alternate bootloader code instead of the bootloader code,and wherein the alternate bootloader code is configured to initiate there-flash of the first firmware with the second firmware.
 15. Theirrigation controller of claim 10, wherein the second set of code isconfigured to be activated to identify a version of the first firmwareof the control unit, to determine whether the second firmware is a newerversion of firmware, and to activate the re-flash of at least theportion of the first set of code to be overwritten by the copy of thesecond set of code.
 16. The irrigation controller of claim 1, whereinthe second set of code does not include irrigation programs.
 17. Theirrigation controller of claim 1, wherein first set of code does notinclude the stored irrigation programs.
 18. A method of implementingirrigation, the method comprising: activating a first microcontroller ofa control unit positioned within a housing; storing, in a controllermemory of the control unit communicationally coupled with the firstmicrocontroller, one or more irrigation programs and a first set of codeof the control unit, wherein the first microcontroller is configured toimplement the one or more irrigation programs and to execute the firstset of code; receiving a removable plug-in device that mates to aportion of the irrigation controller, wherein the plug-in device whenmated is communicatively coupled with the first microcontroller, whereinthe removable plug-in device stores a second set of code configured toreplace at least a portion of the first set of code of the control unit;and re-flashing at least a portion of the controller memory copying thesecond set of code from the removable plug-in device and overwriting atleast the portion of the first set of code of the control unit with acopy of the second set of code transferred from the removable plug-indevice to the control unit; wherein the re-flashing at least the portionof the controller memory comprises executing a bootloader code of thefirst set of code that implements the overwriting the first set of codewith the copy of the second set of code over the first set of code ofthe control unit with the exception of the bootloader code that is notwritten over.
 19. The irrigation controller of claim 18, furthercomprising: implementing, by the first microcontroller, the copiedsecond set of code; accessing, by the first microcontroller whileimplementing the copied second set of code, additional functionalitycode stored in memory of the plug-in device that could not be utilizedby the control unit without the copy of the second set of code; andutilizing, by the first microcontroller, the additional functionality ofthe removable plug-in device that could not be utilized by the controlunit without the copy of the second set of code.
 20. The irrigationcontroller of claim 18, wherein the first set of code comprises firstfirmware and the second set of code comprises second firmware, whereinthe second firmware is configured to replace at least a portion of thefirst firmware.